From e99e7f09e7ff087779b25e5331751b815d67d090 Mon Sep 17 00:00:00 2001 From: Sambit Rath Date: Wed, 16 Dec 2020 13:29:22 +0530 Subject: [PATCH] [Private][DataProtection] Initial Commit (#13756) * Move Communication and RedisEnterpriseCache to master branch (#13729) * Move Communication and RedisEnterpriseCache to master branch * Suppress two json files for cred scan * Update module docs for redisenterprisecache and communication * [Tool]Add PoliCheck policy for CloudService (#13707) * Add PoliCheck policy * Add PoliCheck policy Co-authored-by: wyunchi-ms * Initial commit Co-authored-by: Xiaogang Co-authored-by: Yunchi Wang <54880216+wyunchi-ms@users.noreply.github.com> Co-authored-by: wyunchi-ms --- src/DataProtection/.gitattributes | 1 + src/DataProtection/.gitignore | 5 + src/DataProtection/Az.DataProtection.csproj | 43 + .../Az.DataProtection.format.ps1xml | 3055 +++++ src/DataProtection/Az.DataProtection.nuspec | 31 + src/DataProtection/Az.DataProtection.psd1 | 24 + src/DataProtection/Az.DataProtection.psm1 | 109 + src/DataProtection/MSSharedLibKey.snk | Bin 0 -> 160 bytes src/DataProtection/build-module.ps1 | 153 + src/DataProtection/check-dependencies.ps1 | 64 + .../custom/Az.DataProtection.custom.psm1 | 17 + .../custom/BackupInstanceResource.cs | 20 + ...Prepare-AzDataProtectionDatasourceInfo.ps1 | 66 + ...taProtectionBackupInstance_dppplatform.ps1 | 60 + src/DataProtection/custom/readme.md | 41 + src/DataProtection/docs/Az.DataProtection.md | 110 + ...kup-AzDataProtectionBackupInstanceAdhoc.md | 322 + .../Get-AzDataProtectionBackupInstance.md | 189 + .../docs/Get-AzDataProtectionBackupPolicy.md | 183 + .../docs/Get-AzDataProtectionBackupVault.md | 162 + ...Get-AzDataProtectionBackupVaultResource.md | 159 + ...DataProtectionExportJobsOperationResult.md | 197 + .../docs/Get-AzDataProtectionJob.md | 185 + .../Get-AzDataProtectionOperationResult.md | 177 + .../Get-AzDataProtectionOperationStatus.md | 162 + .../docs/Get-AzDataProtectionRecoveryPoint.md | 192 + .../Get-AzDataProtectionRecoveryPointList.md | 177 + ...taProtectionResourceOperationGatekeeper.md | 162 + ...tionResourceOperationGatekeeperResource.md | 159 + ...aProtectionResourceOperationResultPatch.md | 193 + .../Prepare-AzDataProtectionDatasourceInfo.md | 203 + .../Remove-AzDataProtectionBackupInstance.md | 254 + .../Remove-AzDataProtectionBackupPolicy.md | 223 + .../Remove-AzDataProtectionBackupVault.md | 208 + ...taProtectionResourceOperationGatekeeper.md | 208 + .../Set-AzDataProtectionBackupInstance.md | 347 + .../docs/Set-AzDataProtectionBackupPolicy.md | 231 + .../docs/Set-AzDataProtectionBackupVault.md | 302 + ...taProtectionResourceOperationGatekeeper.md | 249 + ...AzDataProtectionBackupInstanceRehydrate.md | 339 + ...t-AzDataProtectionBackupInstanceRestore.md | 356 + .../docs/Start-AzDataProtectionExportJob.md | 238 + .../Test-AzDataProtectionBackupInstance.md | 330 + ...t-AzDataProtectionBackupInstanceRestore.md | 356 + ...taProtectionBackupVaultNameAvailability.md | 260 + .../Update-AzDataProtectionBackupVault.md | 293 + ...taProtectionResourceOperationGatekeeper.md | 264 + src/DataProtection/docs/readme.md | 11 + ...kup-AzDataProtectionBackupInstanceAdhoc.md | 18 + .../Get-AzDataProtectionBackupInstance.md | 18 + .../Get-AzDataProtectionBackupPolicy.md | 18 + .../Get-AzDataProtectionBackupVault.md | 18 + ...Get-AzDataProtectionBackupVaultResource.md | 18 + ...DataProtectionExportJobsOperationResult.md | 18 + .../examples/Get-AzDataProtectionJob.md | 18 + .../Get-AzDataProtectionOperationResult.md | 18 + .../Get-AzDataProtectionOperationStatus.md | 18 + .../Get-AzDataProtectionRecoveryPoint.md | 18 + .../Get-AzDataProtectionRecoveryPointList.md | 18 + ...taProtectionResourceOperationGatekeeper.md | 18 + ...tionResourceOperationGatekeeperResource.md | 18 + ...aProtectionResourceOperationResultPatch.md | 18 + .../Prepare-AzDataProtectionDatasourceInfo.md | 18 + .../Remove-AzDataProtectionBackupInstance.md | 18 + .../Remove-AzDataProtectionBackupPolicy.md | 18 + .../Remove-AzDataProtectionBackupVault.md | 18 + ...taProtectionResourceOperationGatekeeper.md | 18 + .../Set-AzDataProtectionBackupInstance.md | 18 + .../Set-AzDataProtectionBackupPolicy.md | 18 + .../Set-AzDataProtectionBackupVault.md | 18 + ...taProtectionResourceOperationGatekeeper.md | 18 + ...AzDataProtectionBackupInstanceRehydrate.md | 18 + ...t-AzDataProtectionBackupInstanceRestore.md | 18 + .../Start-AzDataProtectionExportJob.md | 18 + .../Test-AzDataProtectionBackupInstance.md | 18 + ...t-AzDataProtectionBackupInstanceRestore.md | 18 + ...taProtectionBackupVaultNameAvailability.md | 18 + .../Update-AzDataProtectionBackupVault.md | 18 + ...taProtectionResourceOperationGatekeeper.md | 18 + src/DataProtection/export-surface.ps1 | 40 + ...up-AzDataProtectionBackupInstanceAdhoc.ps1 | 229 + .../Get-AzDataProtectionBackupInstance.ps1 | 183 + .../Get-AzDataProtectionBackupPolicy.ps1 | 181 + .../Get-AzDataProtectionBackupVault.ps1 | 170 + ...et-AzDataProtectionBackupVaultResource.ps1 | 168 + ...ataProtectionExportJobsOperationResult.ps1 | 186 + .../exports/Get-AzDataProtectionJob.ps1 | 183 + .../Get-AzDataProtectionOperationResult.ps1 | 176 + .../Get-AzDataProtectionOperationStatus.ps1 | 170 + .../Get-AzDataProtectionRecoveryPoint.ps1 | 183 + .../Get-AzDataProtectionRecoveryPointList.ps1 | 176 + ...aProtectionResourceOperationGatekeeper.ps1 | 171 + ...ionResourceOperationGatekeeperResource.ps1 | 168 + ...ProtectionResourceOperationResultPatch.ps1 | 182 + ...Prepare-AzDataProtectionDatasourceInfo.ps1 | 117 + .../exports/ProxyCmdletDefinitions.ps1 | 6034 +++++++++ .../Remove-AzDataProtectionBackupInstance.ps1 | 195 + .../Remove-AzDataProtectionBackupPolicy.ps1 | 183 + .../Remove-AzDataProtectionBackupVault.ps1 | 176 + ...aProtectionResourceOperationGatekeeper.ps1 | 177 + .../Set-AzDataProtectionBackupInstance.ps1 | 268 + .../Set-AzDataProtectionBackupPolicy.ps1 | 180 + .../Set-AzDataProtectionBackupVault.ps1 | 215 + ...aProtectionResourceOperationGatekeeper.ps1 | 190 + ...zDataProtectionBackupInstanceRehydrate.ps1 | 239 + ...-AzDataProtectionBackupInstanceRestore.ps1 | 246 + .../Start-AzDataProtectionExportJob.ps1 | 188 + .../Test-AzDataProtectionBackupInstance.ps1 | 255 + ...-AzDataProtectionBackupInstanceRestore.ps1 | 246 + ...aProtectionBackupVaultNameAvailability.ps1 | 204 + .../Update-AzDataProtectionBackupVault.ps1 | 220 + ...aProtectionResourceOperationGatekeeper.ps1 | 209 + src/DataProtection/exports/readme.md | 20 + src/DataProtection/generate-help.ps1 | 73 + src/DataProtection/generated/Module.cs | 158 + .../generated/api/DataProtectionClient.cs | 7123 +++++++++++ .../AbsoluteDeleteOption.PowerShell.cs | 135 + .../AbsoluteDeleteOption.TypeConverter.cs | 142 + .../Api202001Alpha/AbsoluteDeleteOption.cs | 56 + .../AbsoluteDeleteOption.json.cs | 101 + .../AdHocBackupRuleOptions.PowerShell.cs | 137 + .../AdHocBackupRuleOptions.TypeConverter.cs | 142 + .../Api202001Alpha/AdHocBackupRuleOptions.cs | 68 + .../AdHocBackupRuleOptions.json.cs | 103 + .../AdhocBackupTriggerOption.PowerShell.cs | 133 + .../AdhocBackupTriggerOption.TypeConverter.cs | 142 + .../AdhocBackupTriggerOption.cs | 43 + .../AdhocBackupTriggerOption.json.cs | 101 + .../AdhocBasedTaggingCriteria.PowerShell.cs | 139 + ...AdhocBasedTaggingCriteria.TypeConverter.cs | 142 + .../AdhocBasedTaggingCriteria.cs | 89 + .../AdhocBasedTaggingCriteria.json.cs | 101 + .../AdhocBasedTriggerContext.PowerShell.cs | 143 + .../AdhocBasedTriggerContext.TypeConverter.cs | 142 + .../AdhocBasedTriggerContext.cs | 117 + .../AdhocBasedTriggerContext.json.cs | 103 + ...eBackupDiscreteRecoveryPoint.PowerShell.cs | 145 + ...ckupDiscreteRecoveryPoint.TypeConverter.cs | 142 + .../AzureBackupDiscreteRecoveryPoint.cs | 145 + .../AzureBackupDiscreteRecoveryPoint.json.cs | 121 + .../AzureBackupJob.PowerShell.cs | 205 + .../AzureBackupJob.TypeConverter.cs | 142 + .../Models/Api202001Alpha/AzureBackupJob.cs | 663 + .../Api202001Alpha/AzureBackupJob.json.cs | 196 + .../AzureBackupJobResource.PowerShell.cs | 215 + .../AzureBackupJobResource.TypeConverter.cs | 142 + .../Api202001Alpha/AzureBackupJobResource.cs | 632 + .../AzureBackupJobResource.json.cs | 103 + .../AzureBackupJobResourceList.PowerShell.cs | 135 + ...zureBackupJobResourceList.TypeConverter.cs | 142 + .../AzureBackupJobResourceList.cs | 71 + .../AzureBackupJobResourceList.json.cs | 111 + .../AzureBackupParams.PowerShell.cs | 135 + .../AzureBackupParams.TypeConverter.cs | 142 + .../Api202001Alpha/AzureBackupParams.cs | 69 + .../Api202001Alpha/AzureBackupParams.json.cs | 103 + .../AzureBackupRecoveryPoint.PowerShell.cs | 133 + .../AzureBackupRecoveryPoint.TypeConverter.cs | 142 + .../AzureBackupRecoveryPoint.cs | 43 + .../AzureBackupRecoveryPoint.json.cs | 116 + ...veryPointBasedRestoreRequest.PowerShell.cs | 146 + ...yPointBasedRestoreRequest.TypeConverter.cs | 145 + ...eBackupRecoveryPointBasedRestoreRequest.cs | 90 + ...upRecoveryPointBasedRestoreRequest.json.cs | 105 + ...eBackupRecoveryPointResource.PowerShell.cs | 141 + ...ckupRecoveryPointResource.TypeConverter.cs | 142 + .../AzureBackupRecoveryPointResource.cs | 94 + .../AzureBackupRecoveryPointResource.json.cs | 103 + ...kupRecoveryPointResourceList.PowerShell.cs | 135 + ...RecoveryPointResourceList.TypeConverter.cs | 144 + .../AzureBackupRecoveryPointResourceList.cs | 71 + ...ureBackupRecoveryPointResourceList.json.cs | 112 + ...zureBackupRehydrationRequest.PowerShell.cs | 137 + ...eBackupRehydrationRequest.TypeConverter.cs | 142 + .../AzureBackupRehydrationRequest.cs | 80 + .../AzureBackupRehydrationRequest.json.cs | 105 + .../AzureBackupRestoreRequest.PowerShell.cs | 143 + ...AzureBackupRestoreRequest.TypeConverter.cs | 142 + .../AzureBackupRestoreRequest.cs | 117 + .../AzureBackupRestoreRequest.json.cs | 120 + ...estoreWithRehydrationRequest.PowerShell.cs | 150 + ...oreWithRehydrationRequest.TypeConverter.cs | 145 + ...zureBackupRestoreWithRehydrationRequest.cs | 113 + ...ackupRestoreWithRehydrationRequest.json.cs | 107 + .../AzureBackupRule.PowerShell.cs | 147 + .../AzureBackupRule.TypeConverter.cs | 142 + .../Models/Api202001Alpha/AzureBackupRule.cs | 146 + .../Api202001Alpha/AzureBackupRule.json.cs | 107 + .../AzureRetentionRule.PowerShell.cs | 139 + .../AzureRetentionRule.TypeConverter.cs | 142 + .../Api202001Alpha/AzureRetentionRule.cs | 84 + .../Api202001Alpha/AzureRetentionRule.json.cs | 113 + .../BackupCriteria.PowerShell.cs | 131 + .../BackupCriteria.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BackupCriteria.cs | 46 + .../Api202001Alpha/BackupCriteria.json.cs | 116 + .../BackupInstance.PowerShell.cs | 141 + .../BackupInstance.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BackupInstance.cs | 142 + .../Api202001Alpha/BackupInstance.json.cs | 117 + .../BackupInstanceResource.PowerShell.cs | 139 + .../BackupInstanceResource.TypeConverter.cs | 142 + .../Api202001Alpha/BackupInstanceResource.cs | 88 + .../BackupInstanceResource.json.cs | 103 + .../BackupInstanceResourceList.PowerShell.cs | 135 + ...ackupInstanceResourceList.TypeConverter.cs | 142 + .../BackupInstanceResourceList.cs | 71 + .../BackupInstanceResourceList.json.cs | 111 + .../BackupParameters.PowerShell.cs | 131 + .../BackupParameters.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BackupParameters.cs | 46 + .../Api202001Alpha/BackupParameters.json.cs | 116 + .../Api202001Alpha/BackupPolicy.PowerShell.cs | 135 + .../BackupPolicy.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/BackupPolicy.cs | 78 + .../Api202001Alpha/BackupPolicy.json.cs | 111 + .../BackupSchedule.PowerShell.cs | 131 + .../BackupSchedule.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BackupSchedule.cs | 46 + .../Api202001Alpha/BackupSchedule.json.cs | 109 + .../Api202001Alpha/BackupVault.PowerShell.cs | 133 + .../BackupVault.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/BackupVault.cs | 66 + .../Models/Api202001Alpha/BackupVault.json.cs | 114 + .../BackupVaultResource.PowerShell.cs | 159 + .../BackupVaultResource.TypeConverter.cs | 142 + .../Api202001Alpha/BackupVaultResource.cs | 160 + .../BackupVaultResource.json.cs | 103 + .../BackupVaultResourceList.PowerShell.cs | 135 + .../BackupVaultResourceList.TypeConverter.cs | 142 + .../Api202001Alpha/BackupVaultResourceList.cs | 71 + .../BackupVaultResourceList.json.cs | 111 + .../BaseBackupPolicy.PowerShell.cs | 133 + .../BaseBackupPolicy.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BaseBackupPolicy.cs | 62 + .../Api202001Alpha/BaseBackupPolicy.json.cs | 126 + .../BaseBackupPolicyResource.PowerShell.cs | 143 + .../BaseBackupPolicyResource.TypeConverter.cs | 142 + .../BaseBackupPolicyResource.cs | 110 + .../BaseBackupPolicyResource.json.cs | 103 + ...BaseBackupPolicyResourceList.PowerShell.cs | 135 + ...eBackupPolicyResourceList.TypeConverter.cs | 142 + .../BaseBackupPolicyResourceList.cs | 71 + .../BaseBackupPolicyResourceList.json.cs | 111 + .../BasePolicyRule.PowerShell.cs | 133 + .../BasePolicyRule.TypeConverter.cs | 142 + .../Models/Api202001Alpha/BasePolicyRule.cs | 59 + .../Api202001Alpha/BasePolicyRule.json.cs | 122 + ...CheckNameAvailabilityRequest.PowerShell.cs | 135 + ...ckNameAvailabilityRequest.TypeConverter.cs | 142 + .../CheckNameAvailabilityRequest.cs | 63 + .../CheckNameAvailabilityRequest.json.cs | 103 + .../CheckNameAvailabilityResult.PowerShell.cs | 137 + ...eckNameAvailabilityResult.TypeConverter.cs | 142 + .../CheckNameAvailabilityResult.cs | 80 + .../CheckNameAvailabilityResult.json.cs | 105 + .../ClientDiscoveryDisplay.PowerShell.cs | 139 + .../ClientDiscoveryDisplay.TypeConverter.cs | 142 + .../Api202001Alpha/ClientDiscoveryDisplay.cs | 97 + .../ClientDiscoveryDisplay.json.cs | 107 + ...DiscoveryForLogSpecification.PowerShell.cs | 137 + ...coveryForLogSpecification.TypeConverter.cs | 143 + .../ClientDiscoveryForLogSpecification.cs | 80 + ...ClientDiscoveryForLogSpecification.json.cs | 106 + ...ClientDiscoveryForProperties.PowerShell.cs | 135 + ...entDiscoveryForProperties.TypeConverter.cs | 142 + .../ClientDiscoveryForProperties.cs | 55 + .../ClientDiscoveryForProperties.json.cs | 101 + ...overyForServiceSpecification.PowerShell.cs | 134 + ...ryForServiceSpecification.TypeConverter.cs | 145 + .../ClientDiscoveryForServiceSpecification.cs | 46 + ...ntDiscoveryForServiceSpecification.json.cs | 110 + .../ClientDiscoveryResponse.PowerShell.cs | 135 + .../ClientDiscoveryResponse.TypeConverter.cs | 142 + .../Api202001Alpha/ClientDiscoveryResponse.cs | 63 + .../ClientDiscoveryResponse.json.cs | 111 + ...ntDiscoveryValueForSingleApi.PowerShell.cs | 151 + ...iscoveryValueForSingleApi.TypeConverter.cs | 142 + .../ClientDiscoveryValueForSingleApi.cs | 168 + .../ClientDiscoveryValueForSingleApi.json.cs | 107 + .../Api202001Alpha/CloudError.PowerShell.cs | 141 + .../CloudError.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/CloudError.cs | 126 + .../Models/Api202001Alpha/CloudError.json.cs | 101 + .../CopyOnExpiryOption.PowerShell.cs | 133 + .../CopyOnExpiryOption.TypeConverter.cs | 142 + .../Api202001Alpha/CopyOnExpiryOption.cs | 52 + .../Api202001Alpha/CopyOnExpiryOption.json.cs | 101 + .../Api202001Alpha/CopyOption.PowerShell.cs | 131 + .../CopyOption.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/CopyOption.cs | 46 + .../Models/Api202001Alpha/CopyOption.json.cs | 124 + .../CustomCopyOption.PowerShell.cs | 133 + .../CustomCopyOption.TypeConverter.cs | 142 + .../Models/Api202001Alpha/CustomCopyOption.cs | 69 + .../Api202001Alpha/CustomCopyOption.json.cs | 103 + .../DataStoreInfoBase.PowerShell.cs | 135 + .../DataStoreInfoBase.TypeConverter.cs | 142 + .../Api202001Alpha/DataStoreInfoBase.cs | 63 + .../Api202001Alpha/DataStoreInfoBase.json.cs | 103 + .../Api202001Alpha/Datasource.PowerShell.cs | 143 + .../Datasource.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/Datasource.cs | 157 + .../Models/Api202001Alpha/Datasource.json.cs | 113 + .../DatasourceSet.PowerShell.cs | 143 + .../DatasourceSet.TypeConverter.cs | 142 + .../Models/Api202001Alpha/DatasourceSet.cs | 157 + .../Api202001Alpha/DatasourceSet.json.cs | 113 + .../Models/Api202001Alpha/Day.PowerShell.cs | 133 + .../Api202001Alpha/Day.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/Day.cs | 63 + .../api/Models/Api202001Alpha/Day.json.cs | 103 + .../Api202001Alpha/DeleteOption.PowerShell.cs | 133 + .../DeleteOption.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/DeleteOption.cs | 63 + .../Api202001Alpha/DeleteOption.json.cs | 118 + .../DppIdentityDetails.PowerShell.cs | 139 + .../DppIdentityDetails.TypeConverter.cs | 142 + .../Api202001Alpha/DppIdentityDetails.cs | 121 + .../Api202001Alpha/DppIdentityDetails.json.cs | 116 + .../Api202001Alpha/DppResource.PowerShell.cs | 135 + .../DppResource.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/DppResource.cs | 95 + .../Models/Api202001Alpha/DppResource.json.cs | 114 + .../DppResourceList.PowerShell.cs | 131 + .../DppResourceList.TypeConverter.cs | 142 + .../Models/Api202001Alpha/DppResourceList.cs | 52 + .../Api202001Alpha/DppResourceList.json.cs | 101 + .../DppTrackedResource.PowerShell.cs | 151 + .../DppTrackedResource.TypeConverter.cs | 142 + .../Api202001Alpha/DppTrackedResource.cs | 235 + .../Api202001Alpha/DppTrackedResource.json.cs | 121 + .../DppTrackedResourceList.PowerShell.cs | 131 + .../DppTrackedResourceList.TypeConverter.cs | 142 + .../Api202001Alpha/DppTrackedResourceList.cs | 49 + .../DppTrackedResourceList.json.cs | 100 + .../DppTrackedResourceTags.PowerShell.cs | 135 + .../DppTrackedResourceTags.TypeConverter.cs | 142 + .../Api202001Alpha/DppTrackedResourceTags.cs | 30 + .../DppTrackedResourceTags.dictionary.cs | 70 + .../DppTrackedResourceTags.json.cs | 102 + .../Models/Api202001Alpha/Error.PowerShell.cs | 139 + .../Api202001Alpha/Error.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/Error.cs | 129 + .../api/Models/Api202001Alpha/Error.json.cs | 140 + .../ErrorAdditionalInfo1.PowerShell.cs | 135 + .../ErrorAdditionalInfo1.TypeConverter.cs | 142 + .../Api202001Alpha/ErrorAdditionalInfo1.cs | 69 + .../ErrorAdditionalInfo1.json.cs | 109 + .../ErrorAdditionalInfo2.PowerShell.cs | 131 + .../ErrorAdditionalInfo2.TypeConverter.cs | 142 + .../Api202001Alpha/ErrorAdditionalInfo2.cs | 29 + .../ErrorAdditionalInfo2.json.cs | 99 + .../ExportJobsResult.PowerShell.cs | 137 + .../ExportJobsResult.TypeConverter.cs | 142 + .../Models/Api202001Alpha/ExportJobsResult.cs | 109 + .../Api202001Alpha/ExportJobsResult.json.cs | 119 + .../ImmediateCopyOption.PowerShell.cs | 133 + .../ImmediateCopyOption.TypeConverter.cs | 142 + .../Api202001Alpha/ImmediateCopyOption.cs | 52 + .../ImmediateCopyOption.json.cs | 101 + .../Api202001Alpha/InnerError.PowerShell.cs | 135 + .../InnerError.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/InnerError.cs | 86 + .../Models/Api202001Alpha/InnerError.json.cs | 105 + .../InnerErrorAdditionalInfo.PowerShell.cs | 137 + .../InnerErrorAdditionalInfo.TypeConverter.cs | 142 + .../InnerErrorAdditionalInfo.cs | 32 + .../InnerErrorAdditionalInfo.dictionary.cs | 70 + .../InnerErrorAdditionalInfo.json.cs | 104 + .../JobExtendedInfo.PowerShell.cs | 151 + .../JobExtendedInfo.TypeConverter.cs | 142 + .../Models/Api202001Alpha/JobExtendedInfo.cs | 202 + .../Api202001Alpha/JobExtendedInfo.json.cs | 139 + ...xtendedInfoAdditionalDetails.PowerShell.cs | 135 + ...ndedInfoAdditionalDetails.TypeConverter.cs | 142 + .../JobExtendedInfoAdditionalDetails.cs | 30 + ...xtendedInfoAdditionalDetails.dictionary.cs | 70 + .../JobExtendedInfoAdditionalDetails.json.cs | 102 + .../Api202001Alpha/JobSubTask.PowerShell.cs | 139 + .../JobSubTask.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/JobSubTask.cs | 117 + .../Models/Api202001Alpha/JobSubTask.json.cs | 112 + .../JobSubTaskAdditionalDetails.PowerShell.cs | 135 + ...bSubTaskAdditionalDetails.TypeConverter.cs | 142 + .../JobSubTaskAdditionalDetails.cs | 30 + .../JobSubTaskAdditionalDetails.dictionary.cs | 70 + .../JobSubTaskAdditionalDetails.json.cs | 102 + .../OperationExtendedInfo.PowerShell.cs | 133 + .../OperationExtendedInfo.TypeConverter.cs | 142 + .../Api202001Alpha/OperationExtendedInfo.cs | 52 + .../OperationExtendedInfo.json.cs | 101 + .../OperationJobExtendedInfo.PowerShell.cs | 135 + .../OperationJobExtendedInfo.TypeConverter.cs | 142 + .../OperationJobExtendedInfo.cs | 71 + .../OperationJobExtendedInfo.json.cs | 103 + .../OperationResource.PowerShell.cs | 157 + .../OperationResource.TypeConverter.cs | 142 + .../Api202001Alpha/OperationResource.cs | 256 + .../Api202001Alpha/OperationResource.json.cs | 113 + .../PatchResourceRequestInput.PowerShell.cs | 143 + ...PatchResourceRequestInput.TypeConverter.cs | 142 + .../PatchResourceRequestInput.cs | 138 + .../PatchResourceRequestInput.json.cs | 103 + ...atchResourceRequestInputTags.PowerShell.cs | 135 + ...hResourceRequestInputTags.TypeConverter.cs | 142 + .../PatchResourceRequestInputTags.cs | 30 + ...atchResourceRequestInputTags.dictionary.cs | 70 + .../PatchResourceRequestInputTags.json.cs | 102 + .../Api202001Alpha/PolicyInfo.PowerShell.cs | 133 + .../PolicyInfo.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/PolicyInfo.cs | 62 + .../Models/Api202001Alpha/PolicyInfo.json.cs | 106 + .../ProtectionStatusDetails.PowerShell.cs | 135 + .../ProtectionStatusDetails.TypeConverter.cs | 142 + .../Api202001Alpha/ProtectionStatusDetails.cs | 63 + .../ProtectionStatusDetails.json.cs | 103 + ...ecoveryPointDataStoreDetails.PowerShell.cs | 149 + ...veryPointDataStoreDetails.TypeConverter.cs | 142 + .../RecoveryPointDataStoreDetails.cs | 177 + .../RecoveryPointDataStoreDetails.json.cs | 123 + .../ResourceOperationGateKeeper.PowerShell.cs | 137 + ...sourceOperationGateKeeper.TypeConverter.cs | 142 + .../ResourceOperationGateKeeper.cs | 95 + .../ResourceOperationGateKeeper.json.cs | 122 + ...eOperationGateKeeperResource.PowerShell.cs | 161 + ...erationGateKeeperResource.TypeConverter.cs | 143 + .../ResourceOperationGateKeeperResource.cs | 186 + ...esourceOperationGateKeeperResource.json.cs | 104 + ...rationGateKeeperResourceList.PowerShell.cs | 136 + ...ionGateKeeperResourceList.TypeConverter.cs | 145 + ...ResourceOperationGateKeeperResourceList.cs | 71 + ...rceOperationGateKeeperResourceList.json.cs | 113 + .../RestoreFilesTargetInfo.PowerShell.cs | 145 + .../RestoreFilesTargetInfo.TypeConverter.cs | 142 + .../Api202001Alpha/RestoreFilesTargetInfo.cs | 143 + .../RestoreFilesTargetInfo.json.cs | 103 + ...storeJobRecoveryPointDetails.PowerShell.cs | 133 + ...reJobRecoveryPointDetails.TypeConverter.cs | 142 + .../RestoreJobRecoveryPointDetails.cs | 56 + .../RestoreJobRecoveryPointDetails.json.cs | 102 + .../RestoreTargetInfo.PowerShell.cs | 169 + .../RestoreTargetInfo.TypeConverter.cs | 142 + .../Api202001Alpha/RestoreTargetInfo.cs | 301 + .../Api202001Alpha/RestoreTargetInfo.json.cs | 105 + .../RestoreTargetInfoBase.PowerShell.cs | 137 + .../RestoreTargetInfoBase.TypeConverter.cs | 142 + .../Api202001Alpha/RestoreTargetInfoBase.cs | 83 + .../RestoreTargetInfoBase.json.cs | 124 + .../Api202001Alpha/RetentionTag.PowerShell.cs | 135 + .../RetentionTag.TypeConverter.cs | 142 + .../api/Models/Api202001Alpha/RetentionTag.cs | 86 + .../Api202001Alpha/RetentionTag.json.cs | 111 + .../ScheduleBasedBackupCriteria.PowerShell.cs | 145 + ...heduleBasedBackupCriteria.TypeConverter.cs | 142 + .../ScheduleBasedBackupCriteria.cs | 164 + .../ScheduleBasedBackupCriteria.json.cs | 161 + .../ScheduleBasedTriggerContext.PowerShell.cs | 139 + ...heduleBasedTriggerContext.TypeConverter.cs | 142 + .../ScheduleBasedTriggerContext.cs | 95 + .../ScheduleBasedTriggerContext.json.cs | 113 + .../SourceLifeCycle.PowerShell.cs | 143 + .../SourceLifeCycle.TypeConverter.cs | 142 + .../Models/Api202001Alpha/SourceLifeCycle.cs | 125 + .../Api202001Alpha/SourceLifeCycle.json.cs | 113 + .../StorageSetting.PowerShell.cs | 133 + .../StorageSetting.TypeConverter.cs | 142 + .../Models/Api202001Alpha/StorageSetting.cs | 63 + .../Api202001Alpha/StorageSetting.json.cs | 103 + .../TaggingCriteria.PowerShell.cs | 143 + .../TaggingCriteria.TypeConverter.cs | 142 + .../Models/Api202001Alpha/TaggingCriteria.cs | 140 + .../Api202001Alpha/TaggingCriteria.json.cs | 115 + .../TargetCopySetting.PowerShell.cs | 141 + .../TargetCopySetting.TypeConverter.cs | 142 + .../Api202001Alpha/TargetCopySetting.cs | 95 + .../Api202001Alpha/TargetCopySetting.json.cs | 103 + .../TargetDetails.PowerShell.cs | 137 + .../TargetDetails.TypeConverter.cs | 142 + .../Models/Api202001Alpha/TargetDetails.cs | 108 + .../Api202001Alpha/TargetDetails.json.cs | 107 + .../TriggerBackupRequest.PowerShell.cs | 139 + .../TriggerBackupRequest.TypeConverter.cs | 142 + .../Api202001Alpha/TriggerBackupRequest.cs | 71 + .../TriggerBackupRequest.json.cs | 101 + .../TriggerContext.PowerShell.cs | 131 + .../TriggerContext.TypeConverter.cs | 142 + .../Models/Api202001Alpha/TriggerContext.cs | 46 + .../Api202001Alpha/TriggerContext.json.cs | 120 + .../UserFacingError.PowerShell.cs | 147 + .../UserFacingError.TypeConverter.cs | 142 + .../Models/Api202001Alpha/UserFacingError.cs | 166 + .../Api202001Alpha/UserFacingError.json.cs | 133 + .../ValidateForBackupRequest.PowerShell.cs | 133 + .../ValidateForBackupRequest.TypeConverter.cs | 142 + .../ValidateForBackupRequest.cs | 46 + .../ValidateForBackupRequest.json.cs | 101 + ...ValidateRestoreRequestObject.PowerShell.cs | 145 + ...idateRestoreRequestObject.TypeConverter.cs | 142 + .../ValidateRestoreRequestObject.cs | 118 + .../ValidateRestoreRequestObject.json.cs | 101 + ...ackupAcceptedResponseHeaders.PowerShell.cs | 141 + ...upAcceptedResponseHeaders.TypeConverter.cs | 152 + ...ancesAdhocBackupAcceptedResponseHeaders.cs | 108 + ...AdhocBackupAcceptedResponseHeaders.json.cs | 106 + ...eleteAcceptedResponseHeaders.PowerShell.cs | 141 + ...teAcceptedResponseHeaders.TypeConverter.cs | 150 + ...pInstancesDeleteAcceptedResponseHeaders.cs | 108 + ...ancesDeleteAcceptedResponseHeaders.json.cs | 106 + ...drateAcceptedResponseHeaders.PowerShell.cs | 141 + ...teAcceptedResponseHeaders.TypeConverter.cs | 152 + ...TriggerRehydrateAcceptedResponseHeaders.cs | 108 + ...erRehydrateAcceptedResponseHeaders.json.cs | 106 + ...storeAcceptedResponseHeaders.PowerShell.cs | 141 + ...reAcceptedResponseHeaders.TypeConverter.cs | 152 + ...esTriggerRestoreAcceptedResponseHeaders.cs | 108 + ...ggerRestoreAcceptedResponseHeaders.json.cs | 106 + ...ackupAcceptedResponseHeaders.PowerShell.cs | 141 + ...upAcceptedResponseHeaders.TypeConverter.cs | 152 + ...alidateForBackupAcceptedResponseHeaders.cs | 108 + ...teForBackupAcceptedResponseHeaders.json.cs | 106 + ...storeAcceptedResponseHeaders.PowerShell.cs | 141 + ...reAcceptedResponseHeaders.TypeConverter.cs | 152 + ...sValidateRestoreAcceptedResponseHeaders.cs | 108 + ...dateRestoreAcceptedResponseHeaders.json.cs | 106 + .../DataProtectionIdentity.PowerShell.cs | 154 + .../DataProtectionIdentity.TypeConverter.cs | 157 + .../api/Models/DataProtectionIdentity.cs | 221 + .../api/Models/DataProtectionIdentity.json.cs | 125 + ...iggerAcceptedResponseHeaders.PowerShell.cs | 139 + ...erAcceptedResponseHeaders.TypeConverter.cs | 150 + ...xportJobsTriggerAcceptedResponseHeaders.cs | 87 + ...JobsTriggerAcceptedResponseHeaders.json.cs | 105 + .../api/Support/AbsoluteMarker.Completer.cs | 51 + .../Support/AbsoluteMarker.TypeConverter.cs | 59 + .../generated/api/Support/AbsoluteMarker.cs | 103 + .../api/Support/DataStoreTypes.Completer.cs | 43 + .../Support/DataStoreTypes.TypeConverter.cs | 59 + .../generated/api/Support/DataStoreTypes.cs | 99 + .../api/Support/DayOfWeek.Completer.cs | 59 + .../api/Support/DayOfWeek.TypeConverter.cs | 59 + .../generated/api/Support/DayOfWeek.cs | 107 + .../generated/api/Support/Month.Completer.cs | 79 + .../api/Support/Month.TypeConverter.cs | 59 + .../generated/api/Support/Month.cs | 117 + .../Support/ProvisioningState.Completer.cs | 51 + .../ProvisioningState.TypeConverter.cs | 59 + .../api/Support/ProvisioningState.cs | 103 + .../Support/RehydrationPriority.Completer.cs | 43 + .../RehydrationPriority.TypeConverter.cs | 59 + .../api/Support/RehydrationPriority.cs | 99 + .../Support/RehydrationStatus.Completer.cs | 51 + .../RehydrationStatus.TypeConverter.cs | 59 + .../api/Support/RehydrationStatus.cs | 103 + .../RestoreTargetLocationType.Completer.cs | 43 + ...RestoreTargetLocationType.TypeConverter.cs | 59 + .../api/Support/RestoreTargetLocationType.cs | 99 + .../Support/SourceDataStoreType.Completer.cs | 43 + .../SourceDataStoreType.TypeConverter.cs | 59 + .../api/Support/SourceDataStoreType.cs | 99 + .../generated/api/Support/Status.Completer.cs | 55 + .../api/Support/Status.TypeConverter.cs | 59 + .../generated/api/Support/Status.cs | 105 + .../Support/StorageSettingTypes.Completer.cs | 39 + .../StorageSettingTypes.TypeConverter.cs | 59 + .../api/Support/StorageSettingTypes.cs | 97 + .../api/Support/WeekNumber.Completer.cs | 51 + .../api/Support/WeekNumber.TypeConverter.cs | 59 + .../generated/api/Support/WeekNumber.cs | 103 + ...ataProtectionBackupInstanceAdhoc_Backup.cs | 498 + ...ctionBackupInstanceAdhoc_BackupExpanded.cs | 515 + ...onBackupInstanceAdhoc_BackupViaIdentity.cs | 468 + ...InstanceAdhoc_BackupViaIdentityExpanded.cs | 484 + .../GetAzDataProtectionBackupInstance_Get.cs | 399 + .../GetAzDataProtectionBackupInstance_Get1.cs | 413 + ...ProtectionBackupInstance_GetViaIdentity.cs | 378 + ...rotectionBackupInstance_GetViaIdentity1.cs | 381 + .../GetAzDataProtectionBackupPolicy_Get.cs | 412 + ...taProtectionBackupPolicy_GetViaIdentity.cs | 381 + .../GetAzDataProtectionBackupPolicy_List.cs | 399 + ...AzDataProtectionBackupVaultResource_Get.cs | 371 + ...zDataProtectionBackupVaultResource_Get1.cs | 385 + ...ctionBackupVaultResource_GetViaIdentity.cs | 370 + ...tionBackupVaultResource_GetViaIdentity1.cs | 374 + .../GetAzDataProtectionBackupVault_Get.cs | 398 + ...ataProtectionBackupVault_GetViaIdentity.cs | 377 + ...ProtectionExportJobsOperationResult_Get.cs | 456 + ...xportJobsOperationResult_GetViaIdentity.cs | 425 + .../cmdlets/GetAzDataProtectionJob_Get.cs | 415 + .../GetAzDataProtectionJob_GetViaIdentity.cs | 381 + .../cmdlets/GetAzDataProtectionJob_List.cs | 399 + .../GetAzDataProtectionOperationResult_Get.cs | 381 + ...rotectionOperationResult_GetViaIdentity.cs | 362 + .../GetAzDataProtectionOperationStatus_Get.cs | 396 + ...rotectionOperationStatus_GetViaIdentity.cs | 377 + .../GetAzDataProtectionOperation_List.cs | 361 + ...etAzDataProtectionRecoveryPointList_Get.cs | 413 + ...tectionRecoveryPointList_GetViaIdentity.cs | 382 + .../GetAzDataProtectionRecoveryPoint_Get.cs | 426 + ...aProtectionRecoveryPoint_GetViaIdentity.cs | 385 + ...ResourceOperationGatekeeperResource_Get.cs | 371 + ...esourceOperationGatekeeperResource_Get1.cs | 385 + ...rationGatekeeperResource_GetViaIdentity.cs | 371 + ...ationGatekeeperResource_GetViaIdentity1.cs | 375 + ...otectionResourceOperationGatekeeper_Get.cs | 399 + ...ourceOperationGatekeeper_GetViaIdentity.cs | 377 + ...tectionResourceOperationResultPatch_Get.cs | 451 + ...urceOperationResultPatch_GetViaIdentity.cs | 422 + ...veAzDataProtectionBackupInstance_Delete.cs | 484 + ...tectionBackupInstance_DeleteViaIdentity.cs | 451 + ...moveAzDataProtectionBackupPolicy_Delete.cs | 451 + ...rotectionBackupPolicy_DeleteViaIdentity.cs | 423 + ...emoveAzDataProtectionBackupVault_Delete.cs | 437 + ...ProtectionBackupVault_DeleteViaIdentity.cs | 419 + ...ctionResourceOperationGatekeeper_Delete.cs | 438 + ...ceOperationGatekeeper_DeleteViaIdentity.cs | 420 + .../SetAzDataProtectionBackupInstance_Put.cs | 493 + ...ataProtectionBackupInstance_PutExpanded.cs | 497 + .../SetAzDataProtectionBackupPolicy_Put.cs | 425 + ...zDataProtectionBackupPolicy_PutExpanded.cs | 441 + .../SetAzDataProtectionBackupVault_Put.cs | 478 + ...AzDataProtectionBackupVault_PutExpanded.cs | 528 + ...otectionResourceOperationGatekeeper_Put.cs | 414 + ...ResourceOperationGatekeeper_PutExpanded.cs | 452 + ...otectionBackupInstanceRehydrate_Trigger.cs | 497 + ...BackupInstanceRehydrate_TriggerExpanded.cs | 526 + ...kupInstanceRehydrate_TriggerViaIdentity.cs | 469 + ...nceRehydrate_TriggerViaIdentityExpanded.cs | 496 + ...ProtectionBackupInstanceRestore_Trigger.cs | 498 + ...onBackupInstanceRestore_TriggerExpanded.cs | 538 + ...ackupInstanceRestore_TriggerViaIdentity.cs | 468 + ...tanceRestore_TriggerViaIdentityExpanded.cs | 507 + .../StartAzDataProtectionExportJob_Trigger.cs | 469 + ...aProtectionExportJob_TriggerViaIdentity.cs | 448 + ...rotectionBackupInstanceRestore_Validate.cs | 498 + ...nBackupInstanceRestore_ValidateExpanded.cs | 538 + ...ckupInstanceRestore_ValidateViaIdentity.cs | 468 + ...anceRestore_ValidateViaIdentityExpanded.cs | 507 + ...AzDataProtectionBackupInstance_Validate.cs | 483 + ...otectionBackupInstance_ValidateExpanded.cs | 487 + ...ctionBackupInstance_ValidateViaIdentity.cs | 462 + ...kupInstance_ValidateViaIdentityExpanded.cs | 469 + ...ectionBackupVaultNameAvailability_Check.cs | 411 + ...ckupVaultNameAvailability_CheckExpanded.cs | 426 + ...pVaultNameAvailability_CheckViaIdentity.cs | 394 + ...meAvailability_CheckViaIdentityExpanded.cs | 409 + ...UpdateAzDataProtectionBackupVault_Patch.cs | 480 + ...DataProtectionBackupVault_PatchExpanded.cs | 496 + ...aProtectionBackupVault_PatchViaIdentity.cs | 459 + ...ionBackupVault_PatchViaIdentityExpanded.cs | 477 + ...ectionResourceOperationGatekeeper_Patch.cs | 414 + ...sourceOperationGatekeeper_PatchExpanded.cs | 431 + ...rceOperationGatekeeper_PatchViaIdentity.cs | 396 + ...tionGatekeeper_PatchViaIdentityExpanded.cs | 412 + .../Az.Accounts/1.8.1/Accounts.format.ps1xml | 368 + .../1.8.1/Accounts.generated.format.ps1xml | 422 + .../Az.Accounts/1.8.1/Accounts.types.ps1xml | 281 + .../Az.Accounts/1.8.1/Az.Accounts.nuspec | 18 + .../Az.Accounts/1.8.1/Az.Accounts.psd1 | 360 + .../Az.Accounts/1.8.1/Az.Accounts.psm1 | 339 + .../modules/Az.Accounts/1.8.1/Hyak.Common.dll | Bin 0 -> 63880 bytes .../1.8.1/Microsoft.ApplicationInsights.dll | Bin 0 -> 179960 bytes .../1.8.1/Microsoft.Azure.Common.dll | Bin 0 -> 35720 bytes ...PowerShell.Authentication.Abstractions.dll | Bin 0 -> 101760 bytes ...l.Authentication.ResourceManager.deps.json | 1768 +++ ...erShell.Authentication.ResourceManager.dll | Bin 0 -> 70520 bytes ....Azure.PowerShell.Authentication.deps.json | 1734 +++ ...rosoft.Azure.PowerShell.Authentication.dll | Bin 0 -> 105848 bytes ...Microsoft.Azure.PowerShell.Clients.Aks.dll | Bin 0 -> 88960 bytes ...Azure.PowerShell.Clients.Authorization.dll | Bin 0 -> 149880 bytes ...osoft.Azure.PowerShell.Clients.Compute.dll | Bin 0 -> 1418616 bytes ...ft.Azure.PowerShell.Clients.Graph.Rbac.dll | Bin 0 -> 577920 bytes ...soft.Azure.PowerShell.Clients.KeyVault.dll | Bin 0 -> 121720 bytes ...osoft.Azure.PowerShell.Clients.Monitor.dll | Bin 0 -> 412536 bytes ...osoft.Azure.PowerShell.Clients.Network.dll | Bin 0 -> 1687416 bytes ...zure.PowerShell.Clients.PolicyInsights.dll | Bin 0 -> 177016 bytes ...ure.PowerShell.Clients.ResourceManager.dll | Bin 0 -> 1109368 bytes ....PowerShell.Clients.Storage.Management.dll | Bin 0 -> 132472 bytes ...soft.Azure.PowerShell.Clients.Websites.dll | Bin 0 -> 3271040 bytes ...zure.PowerShell.Cmdlets.Accounts.deps.json | 1855 +++ ...soft.Azure.PowerShell.Cmdlets.Accounts.dll | Bin 0 -> 390016 bytes ...e.PowerShell.Cmdlets.Accounts.dll-Help.xml | 10328 ++++++++++++++++ .../Microsoft.Azure.PowerShell.Common.dll | Bin 0 -> 245624 bytes .../Microsoft.Azure.PowerShell.Storage.dll | Bin 0 -> 19320 bytes .../Microsoft.Azure.PowerShell.Strategies.dll | Bin 0 -> 64376 bytes .../Microsoft.Rest.ClientRuntime.Azure.dll | Bin 0 -> 97872 bytes .../1.8.1/Microsoft.Rest.ClientRuntime.dll | Bin 0 -> 79736 bytes ...soft.WindowsAzure.Storage.DataMovement.dll | Bin 0 -> 302784 bytes .../1.8.1/Microsoft.WindowsAzure.Storage.dll | Bin 0 -> 784496 bytes .../1.8.1/NetCoreAssemblies/Azure.Core.dll | Bin 0 -> 128888 bytes .../Microsoft.Bcl.AsyncInterfaces.dll | Bin 0 -> 20856 bytes ...Model.Clients.ActiveDirectory.Platform.dll | Bin 0 -> 21616 bytes ....IdentityModel.Clients.ActiveDirectory.dll | Bin 0 -> 232048 bytes .../System.Numerics.Vectors.dll | Bin 0 -> 163464 bytes ...System.Runtime.CompilerServices.Unsafe.dll | Bin 0 -> 18808 bytes .../System.Text.Encodings.Web.dll | Bin 0 -> 99192 bytes .../NetCoreAssemblies/System.Text.Json.dll | Bin 0 -> 294264 bytes .../System.Threading.Tasks.Extensions.dll | Bin 0 -> 14712 bytes .../PostImportScripts/LoadAuthenticators.ps1 | 197 + .../1.8.1/PreloadAssemblies/Azure.Core.dll | Bin 0 -> 128888 bytes ...rosoft.Azure.PowerShell.Authenticators.dll | Bin 0 -> 19840 bytes .../Microsoft.Bcl.AsyncInterfaces.dll | Bin 0 -> 20856 bytes ...Model.Clients.ActiveDirectory.Platform.dll | Bin 0 -> 22128 bytes ....IdentityModel.Clients.ActiveDirectory.dll | Bin 0 -> 294512 bytes .../PreloadAssemblies/Newtonsoft.Json.10.dll | Bin 0 -> 662928 bytes .../PreloadAssemblies/System.Buffers.dll | Bin 0 -> 27992 bytes ...m.Diagnostics.DiagnosticSource.4.0.4.0.dll | Bin 0 -> 49528 bytes .../System.Diagnostics.DiagnosticSource.dll | Bin 0 -> 43952 bytes .../1.8.1/PreloadAssemblies/System.Memory.dll | Bin 0 -> 148760 bytes .../System.Net.Http.WinHttpHandler.dll | Bin 0 -> 117656 bytes .../System.Numerics.Vectors.dll | Bin 0 -> 163712 bytes .../System.Private.ServiceModel.dll | Bin 0 -> 1893240 bytes .../System.Reflection.DispatchProxy.dll | Bin 0 -> 24992 bytes ...untime.CompilerServices.Unsafe.4.0.4.0.dll | Bin 0 -> 22160 bytes ...untime.CompilerServices.Unsafe.4.0.4.1.dll | Bin 0 -> 23600 bytes ...untime.CompilerServices.Unsafe.4.0.5.0.dll | Bin 0 -> 16760 bytes .../System.Security.AccessControl.dll | Bin 0 -> 54416 bytes .../System.Security.Permissions.dll | Bin 0 -> 96400 bytes .../System.Security.Principal.Windows.dll | Bin 0 -> 39056 bytes .../System.ServiceModel.Primitives.dll | Bin 0 -> 28552 bytes .../System.Text.Encodings.Web.dll | Bin 0 -> 57720 bytes .../PreloadAssemblies/System.Text.Json.dll | Bin 0 -> 294264 bytes ...tem.Threading.Tasks.Extensions.4.2.0.0.dll | Bin 0 -> 32904 bytes ...tem.Threading.Tasks.Extensions.4.3.1.0.dll | Bin 0 -> 14712 bytes .../System.Xml.ReaderWriter.dll | Bin 0 -> 606592 bytes .../1.8.1/StartupScripts/AzError.ps1 | 256 + .../Az.Accounts/1.8.1/[Content_Types].xml | 13 + .../modules/Az.Accounts/1.8.1/_rels/.rels | 5 + .../generated/runtime/AsyncCommandRuntime.cs | 828 ++ .../generated/runtime/AsyncJob.cs | 270 + .../runtime/AsyncOperationResponse.cs | 177 + .../BuildTime/Cmdlets/ExportCmdletSurface.cs | 113 + .../BuildTime/Cmdlets/ExportExampleStub.cs | 74 + .../BuildTime/Cmdlets/ExportFormatPs1xml.cs | 99 + .../BuildTime/Cmdlets/ExportHelpMarkdown.cs | 53 + .../BuildTime/Cmdlets/ExportModelSurface.cs | 117 + .../BuildTime/Cmdlets/ExportProxyCmdlet.cs | 159 + .../runtime/BuildTime/Cmdlets/ExportPsd1.cs | 125 + .../BuildTime/Cmdlets/ExportTestStub.cs | 137 + .../BuildTime/Cmdlets/GetCommonParameter.cs | 52 + .../BuildTime/Cmdlets/GetModuleGuid.cs | 31 + .../BuildTime/Cmdlets/GetScriptCmdlet.cs | 53 + .../runtime/BuildTime/CollectionExtensions.cs | 20 + .../runtime/BuildTime/MarkdownRenderer.cs | 121 + .../runtime/BuildTime/Models/PsFormatTypes.cs | 138 + .../BuildTime/Models/PsHelpMarkdownOutputs.cs | 177 + .../runtime/BuildTime/Models/PsHelpTypes.cs | 199 + .../BuildTime/Models/PsMarkdownTypes.cs | 291 + .../BuildTime/Models/PsProxyOutputs.cs | 513 + .../runtime/BuildTime/Models/PsProxyTypes.cs | 499 + .../runtime/BuildTime/PsAttributes.cs | 114 + .../runtime/BuildTime/PsExtensions.cs | 160 + .../generated/runtime/BuildTime/PsHelpers.cs | 104 + .../runtime/BuildTime/StringExtensions.cs | 24 + .../runtime/BuildTime/XmlExtensions.cs | 28 + .../generated/runtime/CmdInfoHandler.cs | 40 + .../Conversions/ConversionException.cs | 17 + .../runtime/Conversions/IJsonConverter.cs | 13 + .../Conversions/Instances/BinaryConverter.cs | 24 + .../Conversions/Instances/BooleanConverter.cs | 13 + .../Instances/DateTimeConverter.cs | 18 + .../Instances/DateTimeOffsetConverter.cs | 15 + .../Conversions/Instances/DecimalConverter.cs | 16 + .../Conversions/Instances/DoubleConverter.cs | 13 + .../Conversions/Instances/EnumConverter.cs | 30 + .../Conversions/Instances/GuidConverter.cs | 15 + .../Instances/HashSet'1Converter.cs | 27 + .../Conversions/Instances/Int16Converter.cs | 13 + .../Conversions/Instances/Int32Converter.cs | 13 + .../Conversions/Instances/Int64Converter.cs | 13 + .../Instances/JsonArrayConverter.cs | 13 + .../Instances/JsonObjectConverter.cs | 13 + .../Conversions/Instances/SingleConverter.cs | 13 + .../Conversions/Instances/StringConverter.cs | 13 + .../Instances/TimeSpanConverter.cs | 15 + .../Conversions/Instances/UInt16Converter.cs | 13 + .../Conversions/Instances/UInt32Converter.cs | 13 + .../Conversions/Instances/UInt64Converter.cs | 13 + .../Conversions/Instances/UriConverter.cs | 15 + .../runtime/Conversions/JsonConverter.cs | 21 + .../Conversions/JsonConverterAttribute.cs | 18 + .../Conversions/JsonConverterFactory.cs | 91 + .../Conversions/StringLikeConverter.cs | 45 + .../Customizations/IJsonSerializable.cs | 249 + .../runtime/Customizations/JsonArray.cs | 13 + .../runtime/Customizations/JsonBoolean.cs | 16 + .../runtime/Customizations/JsonNode.cs | 21 + .../runtime/Customizations/JsonNumber.cs | 78 + .../runtime/Customizations/JsonObject.cs | 183 + .../runtime/Customizations/JsonString.cs | 34 + .../runtime/Customizations/XNodeArray.cs | 44 + .../generated/runtime/Debugging.cs | 28 + .../generated/runtime/DictionaryExtensions.cs | 36 + .../generated/runtime/EventData.cs | 78 + .../generated/runtime/EventDataExtensions.cs | 94 + .../generated/runtime/EventListener.cs | 247 + .../generated/runtime/Events.cs | 27 + .../generated/runtime/EventsExtensions.cs | 27 + .../generated/runtime/Extensions.cs | 111 + .../Extensions/StringBuilderExtensions.cs | 23 + .../Helpers/Extensions/TypeExtensions.cs | 61 + .../generated/runtime/Helpers/Seperator.cs | 11 + .../generated/runtime/Helpers/TypeDetails.cs | 116 + .../generated/runtime/Helpers/XHelper.cs | 75 + .../generated/runtime/HttpPipeline.cs | 88 + .../generated/runtime/HttpPipelineMocking.ps1 | 110 + .../generated/runtime/IAssociativeArray.cs | 21 + .../generated/runtime/IHeaderSerializable.cs | 14 + .../generated/runtime/ISendAsync.cs | 296 + .../generated/runtime/InfoAttribute.cs | 34 + .../generated/runtime/Iso/IsoDate.cs | 214 + .../generated/runtime/JsonType.cs | 18 + .../generated/runtime/Method.cs | 19 + .../generated/runtime/Models/JsonMember.cs | 83 + .../generated/runtime/Models/JsonModel.cs | 89 + .../runtime/Models/JsonModelCache.cs | 19 + .../runtime/Nodes/Collections/JsonArray.cs | 65 + .../Nodes/Collections/XImmutableArray.cs | 62 + .../runtime/Nodes/Collections/XList.cs | 64 + .../runtime/Nodes/Collections/XNodeArray.cs | 68 + .../runtime/Nodes/Collections/XSet.cs | 60 + .../generated/runtime/Nodes/JsonBoolean.cs | 42 + .../generated/runtime/Nodes/JsonDate.cs | 173 + .../generated/runtime/Nodes/JsonNode.cs | 250 + .../generated/runtime/Nodes/JsonNumber.cs | 109 + .../generated/runtime/Nodes/JsonObject.cs | 172 + .../generated/runtime/Nodes/JsonString.cs | 42 + .../generated/runtime/Nodes/XBinary.cs | 40 + .../generated/runtime/Nodes/XNull.cs | 15 + .../Parser/Exceptions/ParseException.cs | 24 + .../generated/runtime/Parser/JsonParser.cs | 180 + .../generated/runtime/Parser/JsonToken.cs | 66 + .../generated/runtime/Parser/JsonTokenizer.cs | 177 + .../generated/runtime/Parser/Location.cs | 43 + .../runtime/Parser/Readers/SourceReader.cs | 130 + .../generated/runtime/Parser/TokenReader.cs | 39 + .../generated/runtime/PipelineMocking.cs | 254 + .../generated/runtime/Response.cs | 27 + .../runtime/Serialization/JsonSerializer.cs | 350 + .../Serialization/PropertyTransformation.cs | 21 + .../Serialization/SerializationOptions.cs | 65 + .../generated/runtime/SerializationMode.cs | 16 + .../runtime/TypeConverterExtensions.cs | 190 + .../runtime/UndeclaredResponseException.cs | 104 + .../generated/runtime/Writers/JsonWriter.cs | 223 + .../generated/runtime/delegates.cs | 23 + src/DataProtection/how-to.md | 58 + .../internal/Az.DataProtection.internal.psm1 | 38 + .../Get-AzDataProtectionOperation.ps1 | 121 + .../internal/ProxyCmdletDefinitions.ps1 | 121 + src/DataProtection/internal/readme.md | 14 + src/DataProtection/license.txt | 227 + src/DataProtection/pack-module.ps1 | 16 + src/DataProtection/readme.md | 27 + src/DataProtection/resources/readme.md | 11 + src/DataProtection/run-module.ps1 | 59 + src/DataProtection/test-module.ps1 | 68 + ...ataProtectionBackupInstanceAdhoc.Tests.ps1 | 30 + ...t-AzDataProtectionBackupInstance.Tests.ps1 | 30 + ...Get-AzDataProtectionBackupPolicy.Tests.ps1 | 26 + .../Get-AzDataProtectionBackupVault.Tests.ps1 | 22 + ...ataProtectionBackupVaultResource.Tests.ps1 | 30 + ...tectionExportJobsOperationResult.Tests.ps1 | 22 + .../test/Get-AzDataProtectionJob.Tests.ps1 | 26 + ...-AzDataProtectionOperationResult.Tests.ps1 | 22 + ...-AzDataProtectionOperationStatus.Tests.ps1 | 22 + ...et-AzDataProtectionRecoveryPoint.Tests.ps1 | 22 + ...zDataProtectionRecoveryPointList.Tests.ps1 | 22 + ...ctionResourceOperationGatekeeper.Tests.ps1 | 22 + ...ourceOperationGatekeeperResource.Tests.ps1 | 30 + ...tionResourceOperationResultPatch.Tests.ps1 | 22 + ...e-AzDataProtectionDatasourceInfo.Tests.ps1 | 22 + ...e-AzDataProtectionBackupInstance.Tests.ps1 | 22 + ...ove-AzDataProtectionBackupPolicy.Tests.ps1 | 22 + ...move-AzDataProtectionBackupVault.Tests.ps1 | 22 + ...ctionResourceOperationGatekeeper.Tests.ps1 | 22 + ...t-AzDataProtectionBackupInstance.Tests.ps1 | 22 + ...Set-AzDataProtectionBackupPolicy.Tests.ps1 | 22 + .../Set-AzDataProtectionBackupVault.Tests.ps1 | 22 + ...ctionResourceOperationGatekeeper.Tests.ps1 | 22 + ...rotectionBackupInstanceRehydrate.Tests.ps1 | 30 + ...aProtectionBackupInstanceRestore.Tests.ps1 | 30 + .../Start-AzDataProtectionExportJob.Tests.ps1 | 22 + ...t-AzDataProtectionBackupInstance.Tests.ps1 | 30 + ...aProtectionBackupInstanceRestore.Tests.ps1 | 30 + ...ctionBackupVaultNameAvailability.Tests.ps1 | 30 + ...date-AzDataProtectionBackupVault.Tests.ps1 | 30 + ...ctionResourceOperationGatekeeper.Tests.ps1 | 30 + src/DataProtection/test/loadEnv.ps1 | 28 + src/DataProtection/test/readme.md | 17 + src/DataProtection/test/utils.ps1 | 24 + 891 files changed, 152955 insertions(+) create mode 100644 src/DataProtection/.gitattributes create mode 100644 src/DataProtection/.gitignore create mode 100644 src/DataProtection/Az.DataProtection.csproj create mode 100644 src/DataProtection/Az.DataProtection.format.ps1xml create mode 100644 src/DataProtection/Az.DataProtection.nuspec create mode 100644 src/DataProtection/Az.DataProtection.psd1 create mode 100644 src/DataProtection/Az.DataProtection.psm1 create mode 100644 src/DataProtection/MSSharedLibKey.snk create mode 100644 src/DataProtection/build-module.ps1 create mode 100644 src/DataProtection/check-dependencies.ps1 create mode 100644 src/DataProtection/custom/Az.DataProtection.custom.psm1 create mode 100644 src/DataProtection/custom/BackupInstanceResource.cs create mode 100644 src/DataProtection/custom/Cmdlets/Common/Prepare-AzDataProtectionDatasourceInfo.ps1 create mode 100644 src/DataProtection/custom/Cmdlets/Common/Set-AzDataProtectionBackupInstance_dppplatform.ps1 create mode 100644 src/DataProtection/custom/readme.md create mode 100644 src/DataProtection/docs/Az.DataProtection.md create mode 100644 src/DataProtection/docs/Backup-AzDataProtectionBackupInstanceAdhoc.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionBackupVaultResource.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionExportJobsOperationResult.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionJob.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionOperationResult.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionOperationStatus.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionRecoveryPoint.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionRecoveryPointList.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeperResource.md create mode 100644 src/DataProtection/docs/Get-AzDataProtectionResourceOperationResultPatch.md create mode 100644 src/DataProtection/docs/Prepare-AzDataProtectionDatasourceInfo.md create mode 100644 src/DataProtection/docs/Remove-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/docs/Remove-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/docs/Remove-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/docs/Remove-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/docs/Set-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/docs/Set-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/docs/Set-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/docs/Set-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRehydrate.md create mode 100644 src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRestore.md create mode 100644 src/DataProtection/docs/Start-AzDataProtectionExportJob.md create mode 100644 src/DataProtection/docs/Test-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/docs/Test-AzDataProtectionBackupInstanceRestore.md create mode 100644 src/DataProtection/docs/Test-AzDataProtectionBackupVaultNameAvailability.md create mode 100644 src/DataProtection/docs/Update-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/docs/Update-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/docs/readme.md create mode 100644 src/DataProtection/examples/Backup-AzDataProtectionBackupInstanceAdhoc.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionBackupVaultResource.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionExportJobsOperationResult.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionJob.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionOperationResult.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionOperationStatus.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionRecoveryPoint.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionRecoveryPointList.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeperResource.md create mode 100644 src/DataProtection/examples/Get-AzDataProtectionResourceOperationResultPatch.md create mode 100644 src/DataProtection/examples/Prepare-AzDataProtectionDatasourceInfo.md create mode 100644 src/DataProtection/examples/Remove-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/examples/Remove-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/examples/Remove-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/examples/Remove-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/examples/Set-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/examples/Set-AzDataProtectionBackupPolicy.md create mode 100644 src/DataProtection/examples/Set-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/examples/Set-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRehydrate.md create mode 100644 src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRestore.md create mode 100644 src/DataProtection/examples/Start-AzDataProtectionExportJob.md create mode 100644 src/DataProtection/examples/Test-AzDataProtectionBackupInstance.md create mode 100644 src/DataProtection/examples/Test-AzDataProtectionBackupInstanceRestore.md create mode 100644 src/DataProtection/examples/Test-AzDataProtectionBackupVaultNameAvailability.md create mode 100644 src/DataProtection/examples/Update-AzDataProtectionBackupVault.md create mode 100644 src/DataProtection/examples/Update-AzDataProtectionResourceOperationGatekeeper.md create mode 100644 src/DataProtection/export-surface.ps1 create mode 100644 src/DataProtection/exports/Backup-AzDataProtectionBackupInstanceAdhoc.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionBackupInstance.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionBackupPolicy.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionBackupVault.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionBackupVaultResource.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionExportJobsOperationResult.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionJob.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionOperationResult.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionOperationStatus.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionRecoveryPoint.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionRecoveryPointList.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeper.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeperResource.ps1 create mode 100644 src/DataProtection/exports/Get-AzDataProtectionResourceOperationResultPatch.ps1 create mode 100644 src/DataProtection/exports/Prepare-AzDataProtectionDatasourceInfo.ps1 create mode 100644 src/DataProtection/exports/ProxyCmdletDefinitions.ps1 create mode 100644 src/DataProtection/exports/Remove-AzDataProtectionBackupInstance.ps1 create mode 100644 src/DataProtection/exports/Remove-AzDataProtectionBackupPolicy.ps1 create mode 100644 src/DataProtection/exports/Remove-AzDataProtectionBackupVault.ps1 create mode 100644 src/DataProtection/exports/Remove-AzDataProtectionResourceOperationGatekeeper.ps1 create mode 100644 src/DataProtection/exports/Set-AzDataProtectionBackupInstance.ps1 create mode 100644 src/DataProtection/exports/Set-AzDataProtectionBackupPolicy.ps1 create mode 100644 src/DataProtection/exports/Set-AzDataProtectionBackupVault.ps1 create mode 100644 src/DataProtection/exports/Set-AzDataProtectionResourceOperationGatekeeper.ps1 create mode 100644 src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRehydrate.ps1 create mode 100644 src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRestore.ps1 create mode 100644 src/DataProtection/exports/Start-AzDataProtectionExportJob.ps1 create mode 100644 src/DataProtection/exports/Test-AzDataProtectionBackupInstance.ps1 create mode 100644 src/DataProtection/exports/Test-AzDataProtectionBackupInstanceRestore.ps1 create mode 100644 src/DataProtection/exports/Test-AzDataProtectionBackupVaultNameAvailability.ps1 create mode 100644 src/DataProtection/exports/Update-AzDataProtectionBackupVault.ps1 create mode 100644 src/DataProtection/exports/Update-AzDataProtectionResourceOperationGatekeeper.ps1 create mode 100644 src/DataProtection/exports/readme.md create mode 100644 src/DataProtection/generate-help.ps1 create mode 100644 src/DataProtection/generated/Module.cs create mode 100644 src/DataProtection/generated/api/DataProtectionClient.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Day.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Day.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Day.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Day.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.dictionary.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Error.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Error.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Error.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/Error.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.dictionary.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.dictionary.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.dictionary.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.dictionary.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.json.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.cs create mode 100644 src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Models/DataProtectionIdentity.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/DataProtectionIdentity.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/DataProtectionIdentity.cs create mode 100644 src/DataProtection/generated/api/Models/DataProtectionIdentity.json.cs create mode 100644 src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.PowerShell.cs create mode 100644 src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.cs create mode 100644 src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.json.cs create mode 100644 src/DataProtection/generated/api/Support/AbsoluteMarker.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/AbsoluteMarker.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/AbsoluteMarker.cs create mode 100644 src/DataProtection/generated/api/Support/DataStoreTypes.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/DataStoreTypes.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/DataStoreTypes.cs create mode 100644 src/DataProtection/generated/api/Support/DayOfWeek.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/DayOfWeek.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/DayOfWeek.cs create mode 100644 src/DataProtection/generated/api/Support/Month.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/Month.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/Month.cs create mode 100644 src/DataProtection/generated/api/Support/ProvisioningState.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/ProvisioningState.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/ProvisioningState.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationPriority.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationPriority.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationPriority.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationStatus.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationStatus.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/RehydrationStatus.cs create mode 100644 src/DataProtection/generated/api/Support/RestoreTargetLocationType.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/RestoreTargetLocationType.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/RestoreTargetLocationType.cs create mode 100644 src/DataProtection/generated/api/Support/SourceDataStoreType.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/SourceDataStoreType.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/SourceDataStoreType.cs create mode 100644 src/DataProtection/generated/api/Support/Status.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/Status.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/Status.cs create mode 100644 src/DataProtection/generated/api/Support/StorageSettingTypes.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/StorageSettingTypes.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/StorageSettingTypes.cs create mode 100644 src/DataProtection/generated/api/Support/WeekNumber.Completer.cs create mode 100644 src/DataProtection/generated/api/Support/WeekNumber.TypeConverter.cs create mode 100644 src/DataProtection/generated/api/Support/WeekNumber.cs create mode 100644 src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_Backup.cs create mode 100644 src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_List.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_List.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionOperation_List.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_Get.cs create mode 100644 src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_Delete.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_DeleteViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_Delete.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_Delete.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_DeleteViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_Delete.cs create mode 100644 src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_Put.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_PutExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_Put.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_PutExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_Put.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_PutExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_Put.cs create mode 100644 src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_PutExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_Trigger.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_Trigger.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_Trigger.cs create mode 100644 src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_TriggerViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_Validate.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_Validate.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_Check.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_Patch.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_Patch.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity.cs create mode 100644 src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded.cs create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.format.ps1xml create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.generated.format.ps1xml create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.types.ps1xml create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.nuspec create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psd1 create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psm1 create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Hyak.Common.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.ApplicationInsights.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.Common.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.Abstractions.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.deps.json create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.deps.json create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Aks.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Authorization.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Compute.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.KeyVault.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Monitor.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Network.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.PolicyInsights.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.ResourceManager.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Storage.Management.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Websites.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.deps.json create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll-Help.xml create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Common.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Storage.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Strategies.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Rest.ClientRuntime.Azure.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Rest.ClientRuntime.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.DataMovement.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Azure.Core.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.Bcl.AsyncInterfaces.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Numerics.Vectors.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Runtime.CompilerServices.Unsafe.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Text.Encodings.Web.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Text.Json.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Threading.Tasks.Extensions.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PostImportScripts/LoadAuthenticators.ps1 create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Azure.Core.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Azure.PowerShell.Authenticators.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Newtonsoft.Json.10.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Buffers.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Diagnostics.DiagnosticSource.4.0.4.0.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Diagnostics.DiagnosticSource.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Memory.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Net.Http.WinHttpHandler.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Numerics.Vectors.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Private.ServiceModel.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Reflection.DispatchProxy.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.1.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.5.0.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Security.AccessControl.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Security.Permissions.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Security.Principal.Windows.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.ServiceModel.Primitives.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Text.Encodings.Web.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Text.Json.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Threading.Tasks.Extensions.4.2.0.0.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Xml.ReaderWriter.dll create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/StartupScripts/AzError.ps1 create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/[Content_Types].xml create mode 100644 src/DataProtection/generated/modules/Az.Accounts/1.8.1/_rels/.rels create mode 100644 src/DataProtection/generated/runtime/AsyncCommandRuntime.cs create mode 100644 src/DataProtection/generated/runtime/AsyncJob.cs create mode 100644 src/DataProtection/generated/runtime/AsyncOperationResponse.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportCmdletSurface.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportExampleStub.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportFormatPs1xml.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportHelpMarkdown.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportModelSurface.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportProxyCmdlet.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportPsd1.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportTestStub.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetCommonParameter.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetModuleGuid.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetScriptCmdlet.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/CollectionExtensions.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/MarkdownRenderer.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsFormatTypes.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsHelpMarkdownOutputs.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsHelpTypes.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsMarkdownTypes.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsProxyOutputs.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/Models/PsProxyTypes.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/PsAttributes.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/PsExtensions.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/PsHelpers.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/StringExtensions.cs create mode 100644 src/DataProtection/generated/runtime/BuildTime/XmlExtensions.cs create mode 100644 src/DataProtection/generated/runtime/CmdInfoHandler.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/ConversionException.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/IJsonConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/BinaryConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/BooleanConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/DateTimeConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/DateTimeOffsetConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/DecimalConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/DoubleConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/EnumConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/GuidConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/HashSet'1Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/Int16Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/Int32Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/Int64Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/JsonArrayConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/JsonObjectConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/SingleConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/StringConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/TimeSpanConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/UInt16Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/UInt32Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/UInt64Converter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/Instances/UriConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/JsonConverter.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/JsonConverterAttribute.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/JsonConverterFactory.cs create mode 100644 src/DataProtection/generated/runtime/Conversions/StringLikeConverter.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/IJsonSerializable.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonArray.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonBoolean.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonNode.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonNumber.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonObject.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/JsonString.cs create mode 100644 src/DataProtection/generated/runtime/Customizations/XNodeArray.cs create mode 100644 src/DataProtection/generated/runtime/Debugging.cs create mode 100644 src/DataProtection/generated/runtime/DictionaryExtensions.cs create mode 100644 src/DataProtection/generated/runtime/EventData.cs create mode 100644 src/DataProtection/generated/runtime/EventDataExtensions.cs create mode 100644 src/DataProtection/generated/runtime/EventListener.cs create mode 100644 src/DataProtection/generated/runtime/Events.cs create mode 100644 src/DataProtection/generated/runtime/EventsExtensions.cs create mode 100644 src/DataProtection/generated/runtime/Extensions.cs create mode 100644 src/DataProtection/generated/runtime/Helpers/Extensions/StringBuilderExtensions.cs create mode 100644 src/DataProtection/generated/runtime/Helpers/Extensions/TypeExtensions.cs create mode 100644 src/DataProtection/generated/runtime/Helpers/Seperator.cs create mode 100644 src/DataProtection/generated/runtime/Helpers/TypeDetails.cs create mode 100644 src/DataProtection/generated/runtime/Helpers/XHelper.cs create mode 100644 src/DataProtection/generated/runtime/HttpPipeline.cs create mode 100644 src/DataProtection/generated/runtime/HttpPipelineMocking.ps1 create mode 100644 src/DataProtection/generated/runtime/IAssociativeArray.cs create mode 100644 src/DataProtection/generated/runtime/IHeaderSerializable.cs create mode 100644 src/DataProtection/generated/runtime/ISendAsync.cs create mode 100644 src/DataProtection/generated/runtime/InfoAttribute.cs create mode 100644 src/DataProtection/generated/runtime/Iso/IsoDate.cs create mode 100644 src/DataProtection/generated/runtime/JsonType.cs create mode 100644 src/DataProtection/generated/runtime/Method.cs create mode 100644 src/DataProtection/generated/runtime/Models/JsonMember.cs create mode 100644 src/DataProtection/generated/runtime/Models/JsonModel.cs create mode 100644 src/DataProtection/generated/runtime/Models/JsonModelCache.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/Collections/JsonArray.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/Collections/XImmutableArray.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/Collections/XList.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/Collections/XNodeArray.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/Collections/XSet.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonBoolean.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonDate.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonNode.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonNumber.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonObject.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/JsonString.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/XBinary.cs create mode 100644 src/DataProtection/generated/runtime/Nodes/XNull.cs create mode 100644 src/DataProtection/generated/runtime/Parser/Exceptions/ParseException.cs create mode 100644 src/DataProtection/generated/runtime/Parser/JsonParser.cs create mode 100644 src/DataProtection/generated/runtime/Parser/JsonToken.cs create mode 100644 src/DataProtection/generated/runtime/Parser/JsonTokenizer.cs create mode 100644 src/DataProtection/generated/runtime/Parser/Location.cs create mode 100644 src/DataProtection/generated/runtime/Parser/Readers/SourceReader.cs create mode 100644 src/DataProtection/generated/runtime/Parser/TokenReader.cs create mode 100644 src/DataProtection/generated/runtime/PipelineMocking.cs create mode 100644 src/DataProtection/generated/runtime/Response.cs create mode 100644 src/DataProtection/generated/runtime/Serialization/JsonSerializer.cs create mode 100644 src/DataProtection/generated/runtime/Serialization/PropertyTransformation.cs create mode 100644 src/DataProtection/generated/runtime/Serialization/SerializationOptions.cs create mode 100644 src/DataProtection/generated/runtime/SerializationMode.cs create mode 100644 src/DataProtection/generated/runtime/TypeConverterExtensions.cs create mode 100644 src/DataProtection/generated/runtime/UndeclaredResponseException.cs create mode 100644 src/DataProtection/generated/runtime/Writers/JsonWriter.cs create mode 100644 src/DataProtection/generated/runtime/delegates.cs create mode 100644 src/DataProtection/how-to.md create mode 100644 src/DataProtection/internal/Az.DataProtection.internal.psm1 create mode 100644 src/DataProtection/internal/Get-AzDataProtectionOperation.ps1 create mode 100644 src/DataProtection/internal/ProxyCmdletDefinitions.ps1 create mode 100644 src/DataProtection/internal/readme.md create mode 100644 src/DataProtection/license.txt create mode 100644 src/DataProtection/pack-module.ps1 create mode 100644 src/DataProtection/readme.md create mode 100644 src/DataProtection/resources/readme.md create mode 100644 src/DataProtection/run-module.ps1 create mode 100644 src/DataProtection/test-module.ps1 create mode 100644 src/DataProtection/test/Backup-AzDataProtectionBackupInstanceAdhoc.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionBackupInstance.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionBackupPolicy.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionBackupVault.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionBackupVaultResource.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionExportJobsOperationResult.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionJob.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionOperationResult.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionOperationStatus.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionRecoveryPoint.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionRecoveryPointList.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeperResource.Tests.ps1 create mode 100644 src/DataProtection/test/Get-AzDataProtectionResourceOperationResultPatch.Tests.ps1 create mode 100644 src/DataProtection/test/Prepare-AzDataProtectionDatasourceInfo.Tests.ps1 create mode 100644 src/DataProtection/test/Remove-AzDataProtectionBackupInstance.Tests.ps1 create mode 100644 src/DataProtection/test/Remove-AzDataProtectionBackupPolicy.Tests.ps1 create mode 100644 src/DataProtection/test/Remove-AzDataProtectionBackupVault.Tests.ps1 create mode 100644 src/DataProtection/test/Remove-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 create mode 100644 src/DataProtection/test/Set-AzDataProtectionBackupInstance.Tests.ps1 create mode 100644 src/DataProtection/test/Set-AzDataProtectionBackupPolicy.Tests.ps1 create mode 100644 src/DataProtection/test/Set-AzDataProtectionBackupVault.Tests.ps1 create mode 100644 src/DataProtection/test/Set-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 create mode 100644 src/DataProtection/test/Start-AzDataProtectionBackupInstanceRehydrate.Tests.ps1 create mode 100644 src/DataProtection/test/Start-AzDataProtectionBackupInstanceRestore.Tests.ps1 create mode 100644 src/DataProtection/test/Start-AzDataProtectionExportJob.Tests.ps1 create mode 100644 src/DataProtection/test/Test-AzDataProtectionBackupInstance.Tests.ps1 create mode 100644 src/DataProtection/test/Test-AzDataProtectionBackupInstanceRestore.Tests.ps1 create mode 100644 src/DataProtection/test/Test-AzDataProtectionBackupVaultNameAvailability.Tests.ps1 create mode 100644 src/DataProtection/test/Update-AzDataProtectionBackupVault.Tests.ps1 create mode 100644 src/DataProtection/test/Update-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 create mode 100644 src/DataProtection/test/loadEnv.ps1 create mode 100644 src/DataProtection/test/readme.md create mode 100644 src/DataProtection/test/utils.ps1 diff --git a/src/DataProtection/.gitattributes b/src/DataProtection/.gitattributes new file mode 100644 index 000000000000..2125666142eb --- /dev/null +++ b/src/DataProtection/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file diff --git a/src/DataProtection/.gitignore b/src/DataProtection/.gitignore new file mode 100644 index 000000000000..7998f37e1e47 --- /dev/null +++ b/src/DataProtection/.gitignore @@ -0,0 +1,5 @@ +bin +obj +.vs +tools +test/*-TestResults.xml \ No newline at end of file diff --git a/src/DataProtection/Az.DataProtection.csproj b/src/DataProtection/Az.DataProtection.csproj new file mode 100644 index 000000000000..1416e9400bfd --- /dev/null +++ b/src/DataProtection/Az.DataProtection.csproj @@ -0,0 +1,43 @@ + + + + 0.1.0 + 7.1 + netstandard2.0 + Library + Az.DataProtection.private + Microsoft.Azure.PowerShell.Cmdlets.DataProtection + true + false + ./bin + $(OutputPath) + Az.DataProtection.nuspec + true + + 1998 + true + + + + + false + TRACE;DEBUG;NETSTANDARD + + + + true + true + MSSharedLibKey.snk + TRACE;RELEASE;NETSTANDARD;SIGN + + + + + + + + + $(DefaultItemExcludes);resources/** + + + \ No newline at end of file diff --git a/src/DataProtection/Az.DataProtection.format.ps1xml b/src/DataProtection/Az.DataProtection.format.ps1xml new file mode 100644 index 000000000000..0871c62d7207 --- /dev/null +++ b/src/DataProtection/Az.DataProtection.format.ps1xml @@ -0,0 +1,3055 @@ + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesAdhocBackupAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesAdhocBackupAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesDeleteAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesDeleteAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesTriggerRehydrateAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesTriggerRehydrateAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesTriggerRestoreAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesTriggerRestoreAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesValidateForBackupAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesValidateForBackupAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesValidateRestoreAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.BackupInstancesValidateRestoreAcceptedResponseHeaders + + + + + + + + + + + + + + + + + + AzureAsyncOperation + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.DataProtectionIdentity + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.DataProtectionIdentity + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BackupInstanceName + + + BackupPolicyName + + + JobId + + + Location + + + OperationId + + + RecoveryPointId + + + ResourceGroupName + + + ResourceOperationGateKeepersName + + + SubscriptionId + + + VaultName + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.ExportJobsTriggerAcceptedResponseHeaders + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.ExportJobsTriggerAcceptedResponseHeaders + + + + + + + + + + + + + + + Location + + + RetryAfter + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource + + + + + + + + + + + + + + + + + + Name + + + Type + + + FriendlyName + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AbsoluteDeleteOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AbsoluteDeleteOption + + + + + + + + + + + + + + + Duration + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptions + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptions + + + + + + + + + + + + RuleName + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOption + + + + + + + + + + + + RetentionTagOverride + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTriggerContext + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTriggerContext + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupDiscreteRecoveryPoint + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupDiscreteRecoveryPoint + + + + + + + + + + + + + + + + + + + + + + + + + + + ObjectType + + + FriendlyName + + + RecoveryPointTime + + + RecoveryPointType + + + RetentionTagName + + + RetentionTagVersion + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJob + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJob + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ActivityId + + + BackupInstanceFriendlyName + + + BackupInstanceId + + + DataSourceId + + + DataSourceLocation + + + DataSourceName + + + DataSourceSetName + + + DataSourceType + + + EndTime + + + IsUserTriggered + + + Operation + + + OperationCategory + + + PolicyId + + + PolicyName + + + ProgressEnabled + + + ProgressUrl + + + RestoreType + + + SourceResourceGroup + + + SourceSubscriptionId + + + StartTime + + + Status + + + SubscriptionId + + + SupportedAction + + + VaultName + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResource + + + + + + + + + + + + + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupParams + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupParams + + + + + + + + + + + + + + + ObjectType + + + BackupType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointBasedRestoreRequest + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointBasedRestoreRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + ObjectType + + + RestoreTargetInfoObjectType + + + RestoreTargetInfoRecoveryOption + + + RestoreTargetInfoRestoreLocation + + + SourceDataStoreType + + + RecoveryPointId + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResource + + + + + + + + + + + + + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRehydrationRequest + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRehydrationRequest + + + + + + + + + + + + + + + + + + RecoveryPointId + + + RehydrationPriority + + + RehydrationRetentionDuration + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest + + + + + + + + + + + + + + + ObjectType + + + SourceDataStoreType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreWithRehydrationRequest + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreWithRehydrationRequest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ObjectType + + + RecoveryPointId + + + RestoreTargetInfoObjectType + + + RestoreTargetInfoRecoveryOption + + + RestoreTargetInfoRestoreLocation + + + SourceDataStoreType + + + RehydrationPriority + + + RehydrationRetentionDuration + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRule + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRule + + + + + + + + + + + + + + + Name + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureRetentionRule + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureRetentionRule + + + + + + + + + + + + + + + + + + Name + + + ObjectType + + + IsDefault + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteria + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteria + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance + + + + + + + + + + + + + + + ObjectType + + + ProvisioningState + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupPolicy + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupPolicy + + + + + + + + + + + + + + + DatasourceType + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupSchedule + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupSchedule + + + + + + + + + + + + RepeatingTimeInterval + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVault + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVault + + + + + + + + + + + + ProvisioningState + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ETag + + + IdentityPrincipalId + + + IdentityTenantId + + + IdentityType + + + IdentityUrl + + + Location + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy + + + + + + + + + + + + + + + DatasourceType + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource + + + + + + + + + + + + + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule + + + + + + + + + + + + + + + Name + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityRequest + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityRequest + + + + + + + + + + + + + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityResult + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityResult + + + + + + + + + + + + + + + + + + Message + + + NameAvailable + + + Reason + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplay + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplay + + + + + + + + + + + + + + + + + + + + + Description + + + Operation + + + Provider + + + Resource + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecification + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecification + + + + + + + + + + + + + + + + + + BlobDuration + + + DisplayName + + + Name + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryResponse + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryResponse + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryValueForSingleApi + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryValueForSingleApi + + + + + + + + + + + + + + + Name + + + Origin + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOnExpiryOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOnExpiryOption + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CustomCopyOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CustomCopyOption + + + + + + + + + + + + + + + ObjectType + + + Duration + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ObjectType + + + ResourceId + + + ResourceLocation + + + ResourceName + + + ResourceType + + + ResourceUri + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DatasourceType + + + ObjectType + + + ResourceId + + + ResourceLocation + + + ResourceName + + + ResourceType + + + ResourceUri + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase + + + + + + + + + + + + + + + DataStoreType + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Day + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Day + + + + + + + + + + + + + + + Date + + + IsLast + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption + + + + + + + + + + + + + + + Duration + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails + + + + + + + + + + + + + + + + + + + + + IdentityUrl + + + PrincipalId + + + TenantId + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource + + + + + + + + + + + + + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource + + + + + + + + + + + + + + + + + + + + + ETag + + + Location + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTags + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTags + + + + + + + + + + + + Item + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error + + + + + + + + + + + + + + + + + + Code + + + Message + + + Target + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1 + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1 + + + + + + + + + + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ExportJobsResult + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ExportJobsResult + + + + + + + + + + + + + + + + + + + + + BlobSasKey + + + BlobUrl + + + ExcelFileBlobSasKey + + + ExcelFileBlobUrl + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ImmediateCopyOption + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ImmediateCopyOption + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError + + + + + + + + + + + + Code + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfo + + + + + + + + + + + + Item + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfo + + + + + + + + + + + + + + + + + + BackupInstanceState + + + DataTransferedInByte + + + RecoveryDestination + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetails + + + + + + + + + + + + Item + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTask + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTask + + + + + + + + + + + + + + + + + + + + + TaskId + + + TaskName + + + TaskProgress + + + TaskStatus + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetails + + + + + + + + + + + + Item + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationJobExtendedInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationJobExtendedInfo + + + + + + + + + + + + + + + ObjectType + + + JobId + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationResource + + + + + + + + + + + + + + + + + + + + + EndTime + + + Name + + + StartTime + + + Status + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTags + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTags + + + + + + + + + + + + Item + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfo + + + + + + + + + + + + + + + PolicyId + + + PolicyVersion + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetails + + + + + + + + + + + + Status + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RecoveryPointDataStoreDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RecoveryPointDataStoreDetails + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CreationTime + + + ExpiryTime + + + MetaData + + + RehydrationExpiryTime + + + RehydrationStatus + + + State + + + Type + + + Visible + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeper + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeper + + + + + + + + + + + + + + + + + + LastLockUpdateTime + + + Operation + + + ProvisioningState + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ETag + + + IdentityPrincipalId + + + IdentityTenantId + + + IdentityType + + + IdentityUrl + + + Location + + + Name + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceList + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceList + + + + + + + + + + + + NextLink + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreFilesTargetInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreFilesTargetInfo + + + + + + + + + + + + + + + + + + ObjectType + + + RecoveryOption + + + RestoreLocation + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails + + + + + + + + + + + + + + + RecoveryPointId + + + RecoveryPointTime + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfo + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfo + + + + + + + + + + + + + + + + + + ObjectType + + + RecoveryOption + + + RestoreLocation + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase + + + + + + + + + + + + + + + + + + ObjectType + + + RecoveryOption + + + RestoreLocation + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag + + + + + + + + + + + + + + + ETag + + + TagName + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ScheduleBasedBackupCriteria + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ScheduleBasedBackupCriteria + + + + + + + + + + + + + + + + + + + + + + + + + + + ObjectType + + + AbsoluteCriterion + + + DaysOfTheWeek + + + MonthsOfYear + + + ScheduleTime + + + WeeksOfTheMonth + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ScheduleBasedTriggerContext + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ScheduleBasedTriggerContext + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSetting + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSetting + + + + + + + + + + + + + + + DataStoreType + + + Type + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TaggingCriteria + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TaggingCriteria + + + + + + + + + + + + + + + IsDefault + + + TaggingPriority + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetails + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetails + + + + + + + + + + + + + + + + + + FilePrefix + + + RestoreTargetLocationType + + + Url + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext + + + + + + + + + + + + ObjectType + + + + + + + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError + + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + IsRetryable + + + IsUserError + + + Message + + + RecommendedAction + + + Target + + + + + + + + \ No newline at end of file diff --git a/src/DataProtection/Az.DataProtection.nuspec b/src/DataProtection/Az.DataProtection.nuspec new file mode 100644 index 000000000000..d1e44dfa0ca8 --- /dev/null +++ b/src/DataProtection/Az.DataProtection.nuspec @@ -0,0 +1,31 @@ + + + + Az.DataProtection + 0.1.0 + Microsoft Corporation + Microsoft Corporation + true + https://aka.ms/azps-license + https://github.com/Azure/azure-powershell + Microsoft Azure PowerShell: $(service-name) cmdlets + + Microsoft Corporation. All rights reserved. + Azure ResourceManager ARM PSModule $(service-name) + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/DataProtection/Az.DataProtection.psd1 b/src/DataProtection/Az.DataProtection.psd1 new file mode 100644 index 000000000000..99e1682106d0 --- /dev/null +++ b/src/DataProtection/Az.DataProtection.psd1 @@ -0,0 +1,24 @@ +@{ + GUID = '0796af7c-0a7c-417f-8d0d-19f9179dac7a' + RootModule = './Az.DataProtection.psm1' + ModuleVersion = '0.1.0' + CompatiblePSEditions = 'Core', 'Desktop' + Author = 'Microsoft Corporation' + CompanyName = 'Microsoft Corporation' + Copyright = 'Microsoft Corporation. All rights reserved.' + Description = 'Microsoft Azure PowerShell: DataProtection cmdlets' + PowerShellVersion = '5.1' + DotNetFrameworkVersion = '4.7.2' + RequiredAssemblies = './bin/Az.DataProtection.private.dll' + FormatsToProcess = './Az.DataProtection.format.ps1xml' + FunctionsToExport = 'Backup-AzDataProtectionBackupInstanceAdhoc', 'Get-AzDataProtectionBackupInstance', 'Get-AzDataProtectionBackupPolicy', 'Get-AzDataProtectionBackupVault', 'Get-AzDataProtectionBackupVaultResource', 'Get-AzDataProtectionExportJobsOperationResult', 'Get-AzDataProtectionJob', 'Get-AzDataProtectionOperationResult', 'Get-AzDataProtectionOperationStatus', 'Get-AzDataProtectionRecoveryPoint', 'Get-AzDataProtectionRecoveryPointList', 'Get-AzDataProtectionResourceOperationGatekeeper', 'Get-AzDataProtectionResourceOperationGatekeeperResource', 'Get-AzDataProtectionResourceOperationResultPatch', 'Prepare-AzDataProtectionDatasourceInfo', 'Remove-AzDataProtectionBackupInstance', 'Remove-AzDataProtectionBackupPolicy', 'Remove-AzDataProtectionBackupVault', 'Remove-AzDataProtectionResourceOperationGatekeeper', 'Set-AzDataProtectionBackupInstance', 'Set-AzDataProtectionBackupPolicy', 'Set-AzDataProtectionBackupVault', 'Set-AzDataProtectionResourceOperationGatekeeper', 'Start-AzDataProtectionBackupInstanceRehydrate', 'Start-AzDataProtectionBackupInstanceRestore', 'Start-AzDataProtectionExportJob', 'Test-AzDataProtectionBackupInstance', 'Test-AzDataProtectionBackupInstanceRestore', 'Test-AzDataProtectionBackupVaultNameAvailability', 'Update-AzDataProtectionBackupVault', 'Update-AzDataProtectionResourceOperationGatekeeper', '*' + AliasesToExport = '*' + PrivateData = @{ + PSData = @{ + Tags = 'Azure', 'ResourceManager', 'ARM', 'PSModule', 'DataProtection' + LicenseUri = 'https://aka.ms/azps-license' + ProjectUri = 'https://github.com/Azure/azure-powershell' + ReleaseNotes = '' + } + } +} diff --git a/src/DataProtection/Az.DataProtection.psm1 b/src/DataProtection/Az.DataProtection.psm1 new file mode 100644 index 000000000000..1fa25a575383 --- /dev/null +++ b/src/DataProtection/Az.DataProtection.psm1 @@ -0,0 +1,109 @@ +# region Generated + # ---------------------------------------------------------------------------------- + # + # Copyright Microsoft Corporation + # 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. + # ---------------------------------------------------------------------------------- + # Load required Az.Accounts module + $accountsName = 'Az.Accounts' + $accountsModule = Get-Module -Name $accountsName + if(-not $accountsModule) { + $localAccountsPath = Join-Path $PSScriptRoot 'generated\modules' + if(Test-Path -Path $localAccountsPath) { + $localAccounts = Get-ChildItem -Path $localAccountsPath -Recurse -Include 'Az.Accounts.psd1' | Select-Object -Last 1 + if($localAccounts) { + $accountsModule = Import-Module -Name ($localAccounts.FullName) -Scope Global -PassThru + } + } + if(-not $accountsModule) { + $hasAdequateVersion = (Get-Module -Name $accountsName -ListAvailable | Where-Object { $_.Version -ge [System.Version]'1.8.1' } | Measure-Object).Count -gt 0 + if($hasAdequateVersion) { + $accountsModule = Import-Module -Name $accountsName -MinimumVersion 1.8.1 -Scope Global -PassThru + } + } + } + + if(-not $accountsModule) { + Write-Error "`nThis module requires $accountsName version 1.8.1 or greater. For installation instructions, please see: https://docs.microsoft.com/en-us/powershell/azure/install-az-ps" -ErrorAction Stop + } elseif (($accountsModule.Version -lt [System.Version]'1.8.1') -and (-not $localAccounts)) { + Write-Error "`nThis module requires $accountsName version 1.8.1 or greater. An earlier version of Az.Accounts is imported in the current PowerShell session. If you are running test, please try to remove '.PSSharedModules' in your home directory. Otherwise please open a new PowerShell session and import this module again.`nAdditionally, this error could indicate that multiple incompatible versions of Azure PowerShell modules are installed on your system. For troubleshooting information, please see: https://aka.ms/azps-version-error" -ErrorAction Stop + } + Write-Information "Loaded Module '$($accountsModule.Name)'" + + # Load the private module dll + $null = Import-Module -Name (Join-Path $PSScriptRoot './bin/Az.DataProtection.private.dll') + + # Get the private module's instance + $instance = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module]::Instance + + # Ask for the shared functionality table + $VTable = Register-AzModule + + # Tweaks the pipeline on module load + $instance.OnModuleLoad = $VTable.OnModuleLoad + + # Tweaks the pipeline per call + $instance.OnNewRequest = $VTable.OnNewRequest + + # Gets shared parameter values + $instance.GetParameterValue = $VTable.GetParameterValue + + # Allows shared module to listen to events from this module + $instance.EventListener = $VTable.EventListener + + # Gets shared argument completers + $instance.ArgumentCompleter = $VTable.ArgumentCompleter + + # The name of the currently selected Azure profile + $instance.ProfileName = $VTable.ProfileName + + + # Load the custom module + $customModulePath = Join-Path $PSScriptRoot './custom/Az.DataProtection.custom.psm1' + if(Test-Path $customModulePath) { + $null = Import-Module -Name $customModulePath + } + + # Export nothing to clear implicit exports + Export-ModuleMember + + # Export proxy cmdlet scripts + $exportsPath = Join-Path $PSScriptRoot './exports' + $directories = Get-ChildItem -Directory -Path $exportsPath + $profileDirectory = $null + if($instance.ProfileName) { + if(($directories | ForEach-Object { $_.Name }) -contains $instance.ProfileName) { + $profileDirectory = $directories | Where-Object { $_.Name -eq $instance.ProfileName } + } else { + # Don't export anything if the profile doesn't exist for the module + $exportsPath = $null + Write-Warning "Selected Azure profile '$($instance.ProfileName)' does not exist for module '$($instance.Name)'. No cmdlets were loaded." + } + } elseif(($directories | Measure-Object).Count -gt 0) { + # Load the last folder if no profile is selected + $profileDirectory = $directories | Select-Object -Last 1 + } + + if($profileDirectory) { + Write-Information "Loaded Azure profile '$($profileDirectory.Name)' for module '$($instance.Name)'" + $exportsPath = $profileDirectory.FullName + } + + if($exportsPath) { + Get-ChildItem -Path $exportsPath -Recurse -Include '*.ps1' -File | ForEach-Object { . $_.FullName } + $cmdletNames = Get-ScriptCmdlet -ScriptFolder $exportsPath + Export-ModuleMember -Function $cmdletNames -Alias (Get-ScriptCmdlet -ScriptFolder $exportsPath -AsAlias) + } + + # Finalize initialization of this module + $instance.Init(); + Write-Information "Loaded Module '$($instance.Name)'" +# endregion diff --git a/src/DataProtection/MSSharedLibKey.snk b/src/DataProtection/MSSharedLibKey.snk new file mode 100644 index 0000000000000000000000000000000000000000..695f1b38774e839e5b90059bfb7f32df1dff4223 GIT binary patch literal 160 zcmV;R0AK$ABme*efB*oL000060ssI2Bme+XQ$aBR1ONa50098C{E+7Ye`kjtcRG*W zi8#m|)B?I?xgZ^2Sw5D;l4TxtPwG;3)3^j?qDHjEteSTF{rM+4WI`v zCD?tsZ^;k+S&r1&HRMb=j738S=;J$tCKNrc$@P|lZ.+)/resourceGroups/(?.+)/providers/(?.+)/backupVaults/(?.+)' + + $null = $PSBoundParameters.Remove("VaultId") + $null = $PSBoundParameters.Remove("DatasourceInfo") + $null = $PSBoundParameters.Remove("PolicyId") + $null = $PSBoundParameters.Add("Name", $name) + $null = $PSBoundParameters.Add("ResourceGroupName", $Matches.rg) + $null = $PSBoundParameters.Add("VaultName", $Matches.vaultName) + $null = $PSBoundParameters.Add("SubscriptionId", $Matches.subscription) + $null = $PSBoundParameters.Add("Property", $instance) + Az.DataProtection\Set-AzDataProtectionBackupInstance @PSBoundParameters + + } + +} \ No newline at end of file diff --git a/src/DataProtection/custom/readme.md b/src/DataProtection/custom/readme.md new file mode 100644 index 000000000000..99f4804e0123 --- /dev/null +++ b/src/DataProtection/custom/readme.md @@ -0,0 +1,41 @@ +# Custom +This directory contains custom implementation for non-generated cmdlets for the `Az.DataProtection` module. Both scripts (`.ps1`) and C# files (`.cs`) can be implemented here. They will be used during the build process in `build-module.ps1`, and create cmdlets into the `..\exports` folder. The only generated file into this folder is the `Az.DataProtection.custom.psm1`. This file should not be modified. + +## Info +- Modifiable: yes +- Generated: partial +- Committed: yes +- Packaged: yes + +## Details +For `Az.DataProtection` to use custom cmdlets, it does this two different ways. We **highly recommend** creating script cmdlets, as they are easier to write and allow access to the other exported cmdlets. C# cmdlets *cannot access exported cmdlets*. + +For C# cmdlets, they are compiled with the rest of the generated low-level cmdlets into the `./bin/Az.DataProtection.private.dll`. The names of the cmdlets (methods) and files must follow the `[cmdletName]_[variantName]` syntax used for generated cmdlets. The `variantName` is used as the `ParameterSetName`, so use something appropriate that doesn't clash with already created variant or parameter set names. You cannot use the `ParameterSetName` property in the `Parameter` attribute on C# cmdlets. Each cmdlet must be separated into variants using the same pattern as seen in the `generated/cmdlets` folder. + +For script cmdlets, these are loaded via the `Az.DataProtection.custom.psm1`. Then, during the build process, this module is loaded and processed in the same manner as the C# cmdlets. The fundemental difference is the script cmdlets use the `ParameterSetName` attribute and C# cmdlets do not. To create a script cmdlet variant of a generated cmdlet, simply decorate all parameters in the script with the new `ParameterSetName` in the `Parameter` attribute. This will appropriately treat each parameter set as a separate variant when processed to be exported during the build. + +## Purpose +This allows the modules to have cmdlets that were not defined in the REST specification. It also allows combining logic using generated cmdlets. This is a level of customization beyond what can be done using the [readme configuration options](https://github.com/Azure/autorest/blob/master/docs/powershell/options.md) that are currently available. These custom cmdlets are then referenced by the cmdlets created at build-time in the `..\exports` folder. + +## Usage +The easiest way currently to start developing custom cmdlets is to copy an existing cmdlet. For C# cmdlets, copy one from the `generated/cmdlets` folder. For script cmdlets, build the project using `build-module.ps1` and copy one of the scripts from the `..\exports` folder. After that, if you want to add new parameter sets, follow the guidelines in the `Details` section above. For implementing a new cmdlets, at minimum, please keep these parameters: +- Break +- DefaultProfile +- HttpPipelineAppend +- HttpPipelinePrepend +- Proxy +- ProxyCredential +- ProxyUseDefaultCredentials + +These provide functionality to our HTTP pipeline and other useful features. In script, you can forward these parameters using `$PSBoundParameters` to the other cmdlets you're calling within `Az.DataProtection`. For C#, follow the usage seen in the `ProcessRecordAsync` method. + +### Attributes +For processing the cmdlets, we've created some additional attributes: +- `Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.DescriptionAttribute` + - Used in C# cmdlets to provide a high-level description of the cmdlet. This is propegated to reference documentation via [help comments](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help) in the exported scripts. +- `Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.DoNotExportAttribute` + - Used in C# and script cmdlets to suppress creating an exported cmdlet at build-time. These cmdlets will *not be exposed* by `Az.DataProtection`. +- `Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.InternalExportAttribute` + - Used in C# cmdlets to route exported cmdlets to the `..\internal`, which are *not exposed* by `Az.DataProtection`. For more information, see [readme.md](..\internal/readme.md) in the `..\internal` folder. +- `Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.ProfileAttribute` + - Used in C# and script cmdlets to define which Azure profiles the cmdlet supports. This is only supported for Azure (`--azure`) modules. \ No newline at end of file diff --git a/src/DataProtection/docs/Az.DataProtection.md b/src/DataProtection/docs/Az.DataProtection.md new file mode 100644 index 000000000000..156875c013d1 --- /dev/null +++ b/src/DataProtection/docs/Az.DataProtection.md @@ -0,0 +1,110 @@ +--- +Module Name: Az.DataProtection +Module Guid: 0796af7c-0a7c-417f-8d0d-19f9179dac7a +Download Help Link: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection +Help Version: 1.0.0.0 +Locale: en-US +--- + +# Az.DataProtection Module +## Description +Microsoft Azure PowerShell: DataProtection cmdlets + +## Az.DataProtection Cmdlets +### [Backup-AzDataProtectionBackupInstanceAdhoc](Backup-AzDataProtectionBackupInstanceAdhoc.md) +Trigger adhoc backup + +### [Get-AzDataProtectionBackupInstance](Get-AzDataProtectionBackupInstance.md) +Gets a backup instances belonging to a backup vault + +### [Get-AzDataProtectionBackupPolicy](Get-AzDataProtectionBackupPolicy.md) +Gets a backup policy belonging to a backup vault + +### [Get-AzDataProtectionBackupVault](Get-AzDataProtectionBackupVault.md) +Returns a resource belonging to a resource group. + +### [Get-AzDataProtectionBackupVaultResource](Get-AzDataProtectionBackupVaultResource.md) +Returns resource collection belonging to a subscription. + +### [Get-AzDataProtectionExportJobsOperationResult](Get-AzDataProtectionExportJobsOperationResult.md) +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. + +### [Get-AzDataProtectionJob](Get-AzDataProtectionJob.md) +Gets a job with id in a backup vault + +### [Get-AzDataProtectionOperationResult](Get-AzDataProtectionOperationResult.md) +Gets the operation result for a resource + +### [Get-AzDataProtectionOperationStatus](Get-AzDataProtectionOperationStatus.md) +Gets the operation status for a resource. + +### [Get-AzDataProtectionRecoveryPoint](Get-AzDataProtectionRecoveryPoint.md) +Gets a Recovery Point using recoveryPointId for a Datasource. + +### [Get-AzDataProtectionRecoveryPointList](Get-AzDataProtectionRecoveryPointList.md) +Returns a list of Recovery Points for a DataSource in a vault. + +### [Get-AzDataProtectionResourceOperationGatekeeper](Get-AzDataProtectionResourceOperationGatekeeper.md) +Returns a ResourceOperationGateKeeper belonging to a resource group. + +### [Get-AzDataProtectionResourceOperationGatekeeperResource](Get-AzDataProtectionResourceOperationGatekeeperResource.md) +Returns ResourceOperationGateKeepers collection belonging to a subscription. + +### [Get-AzDataProtectionResourceOperationResultPatch](Get-AzDataProtectionResourceOperationResultPatch.md) + + +### [Prepare-AzDataProtectionDatasourceInfo](Prepare-AzDataProtectionDatasourceInfo.md) +Prepares Datasource object for backup + +### [Remove-AzDataProtectionBackupInstance](Remove-AzDataProtectionBackupInstance.md) + + +### [Remove-AzDataProtectionBackupPolicy](Remove-AzDataProtectionBackupPolicy.md) +Deletes a backup policy belonging to a backup vault + +### [Remove-AzDataProtectionBackupVault](Remove-AzDataProtectionBackupVault.md) +Deletes a BackupVault resource from the resource group. + +### [Remove-AzDataProtectionResourceOperationGatekeeper](Remove-AzDataProtectionResourceOperationGatekeeper.md) +Deletes a ResourceOperationGateKeeper resource from the resource group. + +### [Set-AzDataProtectionBackupInstance](Set-AzDataProtectionBackupInstance.md) + + +### [Set-AzDataProtectionBackupPolicy](Set-AzDataProtectionBackupPolicy.md) +Creates or Updates a backup policy belonging to a backup vault + +### [Set-AzDataProtectionBackupVault](Set-AzDataProtectionBackupVault.md) +Creates or updates a BackupVault resource belonging to a resource group. + +### [Set-AzDataProtectionResourceOperationGatekeeper](Set-AzDataProtectionResourceOperationGatekeeper.md) +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + +### [Start-AzDataProtectionBackupInstanceRehydrate](Start-AzDataProtectionBackupInstanceRehydrate.md) +rehydrate recovery point for restore for a BackupInstance + +### [Start-AzDataProtectionBackupInstanceRestore](Start-AzDataProtectionBackupInstanceRestore.md) +Triggers restore for a BackupInstance + +### [Start-AzDataProtectionExportJob](Start-AzDataProtectionExportJob.md) +Triggers export of jobs and returns an OperationID to track. + +### [Test-AzDataProtectionBackupInstance](Test-AzDataProtectionBackupInstance.md) +Validate whether adhoc backup will be successful or not + +### [Test-AzDataProtectionBackupInstanceRestore](Test-AzDataProtectionBackupInstanceRestore.md) +Validates if Restore can be triggered for a DataSource + +### [Test-AzDataProtectionBackupVaultNameAvailability](Test-AzDataProtectionBackupVaultNameAvailability.md) +API to check for resource name availability + +### [Update-AzDataProtectionBackupVault](Update-AzDataProtectionBackupVault.md) +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. + +### [Update-AzDataProtectionResourceOperationGatekeeper](Update-AzDataProtectionResourceOperationGatekeeper.md) +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. + diff --git a/src/DataProtection/docs/Backup-AzDataProtectionBackupInstanceAdhoc.md b/src/DataProtection/docs/Backup-AzDataProtectionBackupInstanceAdhoc.md new file mode 100644 index 000000000000..fae659bc099c --- /dev/null +++ b/src/DataProtection/docs/Backup-AzDataProtectionBackupInstanceAdhoc.md @@ -0,0 +1,322 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/backup-azdataprotectionbackupinstanceadhoc +schema: 2.0.0 +--- + +# Backup-AzDataProtectionBackupInstanceAdhoc + +## SYNOPSIS +Trigger adhoc backup + +## SYNTAX + +### BackupExpanded (Default) +``` +Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName -ResourceGroupName + -VaultName -BackupRuleOptionRuleName [-SubscriptionId ] + [-TriggerOptionRetentionTagOverride ] [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### Backup +``` +Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName -ResourceGroupName + -VaultName -Parameter [-SubscriptionId ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### BackupViaIdentity +``` +Backup-AzDataProtectionBackupInstanceAdhoc -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] + [-WhatIf] [] +``` + +### BackupViaIdentityExpanded +``` +Backup-AzDataProtectionBackupInstanceAdhoc -InputObject + -BackupRuleOptionRuleName [-TriggerOptionRetentionTagOverride ] [-DefaultProfile ] + [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Trigger adhoc backup + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupInstanceName +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Backup, BackupExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupRuleOptionRuleName +. + +```yaml +Type: System.String +Parameter Sets: BackupExpanded, BackupViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: BackupViaIdentity, BackupViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Trigger backup request +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest +Parameter Sets: Backup, BackupViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Backup, BackupExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Backup, BackupExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -TriggerOptionRetentionTagOverride +. + +```yaml +Type: System.String +Parameter Sets: BackupExpanded, BackupViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Backup, BackupExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Trigger backup request + - `BackupRuleOptionRuleName `: + - `[TriggerOptionRetentionTagOverride ]`: + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionBackupInstance.md b/src/DataProtection/docs/Get-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..6145160bf7d6 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionBackupInstance.md @@ -0,0 +1,189 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupinstance +schema: 2.0.0 +--- + +# Get-AzDataProtectionBackupInstance + +## SYNOPSIS +Gets a backup instances belonging to a backup vault + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionBackupInstance -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### Get1 +``` +Get-AzDataProtectionBackupInstance -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionBackupInstance -InputObject [-DefaultProfile ] + [] +``` + +### GetViaIdentity1 +``` +Get-AzDataProtectionBackupInstance -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Gets a backup instances belonging to a backup vault + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity, GetViaIdentity1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Get1 +Aliases: BackupInstanceName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get, Get1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get, Get1 +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get, Get1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionBackupPolicy.md b/src/DataProtection/docs/Get-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..dbffe44c0e57 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionBackupPolicy.md @@ -0,0 +1,183 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackuppolicy +schema: 2.0.0 +--- + +# Get-AzDataProtectionBackupPolicy + +## SYNOPSIS +Gets a backup policy belonging to a backup vault + +## SYNTAX + +### List (Default) +``` +Get-AzDataProtectionBackupPolicy -ResourceGroupName -VaultName [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### Get +``` +Get-AzDataProtectionBackupPolicy -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionBackupPolicy -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Gets a backup policy belonging to a backup vault + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: BackupPolicyName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get, List +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get, List +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get, List +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionBackupVault.md b/src/DataProtection/docs/Get-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..329c08c923a4 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionBackupVault.md @@ -0,0 +1,162 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvault +schema: 2.0.0 +--- + +# Get-AzDataProtectionBackupVault + +## SYNOPSIS +Returns a resource belonging to a resource group. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionBackupVault -ResourceGroupName -VaultName [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionBackupVault -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Returns a resource belonging to a resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionBackupVaultResource.md b/src/DataProtection/docs/Get-AzDataProtectionBackupVaultResource.md new file mode 100644 index 000000000000..e9b8134bdfa9 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionBackupVaultResource.md @@ -0,0 +1,159 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvaultresource +schema: 2.0.0 +--- + +# Get-AzDataProtectionBackupVaultResource + +## SYNOPSIS +Returns resource collection belonging to a subscription. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionBackupVaultResource [-SubscriptionId ] [-DefaultProfile ] + [] +``` + +### Get1 +``` +Get-AzDataProtectionBackupVaultResource -ResourceGroupName [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionBackupVaultResource -InputObject [-DefaultProfile ] + [] +``` + +### GetViaIdentity1 +``` +Get-AzDataProtectionBackupVaultResource -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Returns resource collection belonging to a subscription. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity, GetViaIdentity1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get, Get1 +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionExportJobsOperationResult.md b/src/DataProtection/docs/Get-AzDataProtectionExportJobsOperationResult.md new file mode 100644 index 000000000000..9737a2cdf260 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionExportJobsOperationResult.md @@ -0,0 +1,197 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionexportjobsoperationresult +schema: 2.0.0 +--- + +# Get-AzDataProtectionExportJobsOperationResult + +## SYNOPSIS +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionExportJobsOperationResult -OperationId -ResourceGroupName + -VaultName [-SubscriptionId ] [-DefaultProfile ] [-PassThru] + [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionExportJobsOperationResult -InputObject + [-DefaultProfile ] [-PassThru] [] +``` + +## DESCRIPTION +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -OperationId +OperationID which represents the export job. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionJob.md b/src/DataProtection/docs/Get-AzDataProtectionJob.md new file mode 100644 index 000000000000..1d7531d4a802 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionJob.md @@ -0,0 +1,185 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionjob +schema: 2.0.0 +--- + +# Get-AzDataProtectionJob + +## SYNOPSIS +Gets a job with id in a backup vault + +## SYNTAX + +### List (Default) +``` +Get-AzDataProtectionJob -ResourceGroupName -VaultName [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### Get +``` +Get-AzDataProtectionJob -Id -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionJob -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Gets a job with id in a backup vault + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Id +The Job ID. +This is a GUID-formatted string (e.g. +00000000-0000-0000-0000-000000000000). + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: JobId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get, List +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get, List +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get, List +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionOperationResult.md b/src/DataProtection/docs/Get-AzDataProtectionOperationResult.md new file mode 100644 index 000000000000..3bd245b651c2 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionOperationResult.md @@ -0,0 +1,177 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationresult +schema: 2.0.0 +--- + +# Get-AzDataProtectionOperationResult + +## SYNOPSIS +Gets the operation result for a resource + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionOperationResult -Location -OperationId [-SubscriptionId ] + [-DefaultProfile ] [-PassThru] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionOperationResult -InputObject [-DefaultProfile ] + [-PassThru] [] +``` + +## DESCRIPTION +Gets the operation result for a resource + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Location +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OperationId +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionOperationStatus.md b/src/DataProtection/docs/Get-AzDataProtectionOperationStatus.md new file mode 100644 index 000000000000..a6b3f740448b --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionOperationStatus.md @@ -0,0 +1,162 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationstatus +schema: 2.0.0 +--- + +# Get-AzDataProtectionOperationStatus + +## SYNOPSIS +Gets the operation status for a resource. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionOperationStatus -Location -OperationId [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionOperationStatus -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Gets the operation status for a resource. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Location +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -OperationId +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionRecoveryPoint.md b/src/DataProtection/docs/Get-AzDataProtectionRecoveryPoint.md new file mode 100644 index 000000000000..f45bb5142027 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionRecoveryPoint.md @@ -0,0 +1,192 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypoint +schema: 2.0.0 +--- + +# Get-AzDataProtectionRecoveryPoint + +## SYNOPSIS +Gets a Recovery Point using recoveryPointId for a Datasource. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionRecoveryPoint -BackupInstanceName -Id -ResourceGroupName + -VaultName [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionRecoveryPoint -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Gets a Recovery Point using recoveryPointId for a Datasource. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -BackupInstanceName +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Id +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: RecoveryPointId + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionRecoveryPointList.md b/src/DataProtection/docs/Get-AzDataProtectionRecoveryPointList.md new file mode 100644 index 000000000000..a575f8e1b518 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionRecoveryPointList.md @@ -0,0 +1,177 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypointlist +schema: 2.0.0 +--- + +# Get-AzDataProtectionRecoveryPointList + +## SYNOPSIS +Returns a list of Recovery Points for a DataSource in a vault. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionRecoveryPointList -BackupInstanceName -ResourceGroupName + -VaultName [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionRecoveryPointList -InputObject [-DefaultProfile ] + [] +``` + +## DESCRIPTION +Returns a list of Recovery Points for a DataSource in a vault. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -BackupInstanceName +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..fa36f27e0259 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,162 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeper +schema: 2.0.0 +--- + +# Get-AzDataProtectionResourceOperationGatekeeper + +## SYNOPSIS +Returns a ResourceOperationGateKeeper belonging to a resource group. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionResourceOperationGatekeeper -InputObject + [-DefaultProfile ] [] +``` + +## DESCRIPTION +Returns a ResourceOperationGateKeeper belonging to a resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SName +The name of the ResourceOperationGateKeeper + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: ResourceOperationGateKeepersName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeperResource.md b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeperResource.md new file mode 100644 index 000000000000..256e80fb3a8e --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationGatekeeperResource.md @@ -0,0 +1,159 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeperresource +schema: 2.0.0 +--- + +# Get-AzDataProtectionResourceOperationGatekeeperResource + +## SYNOPSIS +Returns ResourceOperationGateKeepers collection belonging to a subscription. + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionResourceOperationGatekeeperResource [-SubscriptionId ] + [-DefaultProfile ] [] +``` + +### Get1 +``` +Get-AzDataProtectionResourceOperationGatekeeperResource -ResourceGroupName + [-SubscriptionId ] [-DefaultProfile ] [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionResourceOperationGatekeeperResource -InputObject + [-DefaultProfile ] [] +``` + +### GetViaIdentity1 +``` +Get-AzDataProtectionResourceOperationGatekeeperResource -InputObject + [-DefaultProfile ] [] +``` + +## DESCRIPTION +Returns ResourceOperationGateKeepers collection belonging to a subscription. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity, GetViaIdentity1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get1 +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get, Get1 +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Get-AzDataProtectionResourceOperationResultPatch.md b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationResultPatch.md new file mode 100644 index 000000000000..5ac5e3ed2932 --- /dev/null +++ b/src/DataProtection/docs/Get-AzDataProtectionResourceOperationResultPatch.md @@ -0,0 +1,193 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationresultpatch +schema: 2.0.0 +--- + +# Get-AzDataProtectionResourceOperationResultPatch + +## SYNOPSIS + + +## SYNTAX + +### Get (Default) +``` +Get-AzDataProtectionResourceOperationResultPatch -OperationId -ResourceGroupName + -VaultName [-SubscriptionId ] [-DefaultProfile ] [-PassThru] + [] +``` + +### GetViaIdentity +``` +Get-AzDataProtectionResourceOperationResultPatch -InputObject + [-DefaultProfile ] [-PassThru] [] +``` + +## DESCRIPTION + + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: GetViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -OperationId +. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String[] +Parameter Sets: Get +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Get +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Prepare-AzDataProtectionDatasourceInfo.md b/src/DataProtection/docs/Prepare-AzDataProtectionDatasourceInfo.md new file mode 100644 index 000000000000..33f762f5d5e3 --- /dev/null +++ b/src/DataProtection/docs/Prepare-AzDataProtectionDatasourceInfo.md @@ -0,0 +1,203 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/prepare-azdataprotectiondatasourceinfo +schema: 2.0.0 +--- + +# Prepare-AzDataProtectionDatasourceInfo + +## SYNOPSIS +Prepares Datasource object for backup + +## SYNTAX + +### GetById (Default) +``` +Prepare-AzDataProtectionDatasourceInfo -DatasourceId -DatasourceType -Location + [-Confirm] [-WhatIf] [] +``` + +### GetByName +``` +Prepare-AzDataProtectionDatasourceInfo -DatasourceType -Location -Name + -ResourceGroup -SubscriptionId [-ParentServerName ] [-Confirm] [-WhatIf] + [] +``` + +## DESCRIPTION +Prepares Datasource object for backup + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DatasourceId +ARM ID of the datasource to be protected + +```yaml +Type: System.String +Parameter Sets: GetById +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DatasourceType +Datasource Type + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Location +Location of Datasource + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Name the datasource to be protected + +```yaml +Type: System.String +Parameter Sets: GetByName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ParentServerName +Server name of the datasource to be protected + +```yaml +Type: System.String +Parameter Sets: GetByName +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroup +ResourceGroup of the datasource to be protected + +```yaml +Type: System.String +Parameter Sets: GetByName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +Subscription ID of the datasource to be protected + +```yaml +Type: System.String +Parameter Sets: GetByName +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource + +## NOTES + +ALIASES + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Remove-AzDataProtectionBackupInstance.md b/src/DataProtection/docs/Remove-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..96e72991c849 --- /dev/null +++ b/src/DataProtection/docs/Remove-AzDataProtectionBackupInstance.md @@ -0,0 +1,254 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupinstance +schema: 2.0.0 +--- + +# Remove-AzDataProtectionBackupInstance + +## SYNOPSIS + + +## SYNTAX + +### Delete (Default) +``` +Remove-AzDataProtectionBackupInstance -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] + [] +``` + +### DeleteViaIdentity +``` +Remove-AzDataProtectionBackupInstance -InputObject [-DefaultProfile ] + [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION + + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: DeleteViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: BackupInstanceName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Remove-AzDataProtectionBackupPolicy.md b/src/DataProtection/docs/Remove-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..119bd1a22d8e --- /dev/null +++ b/src/DataProtection/docs/Remove-AzDataProtectionBackupPolicy.md @@ -0,0 +1,223 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackuppolicy +schema: 2.0.0 +--- + +# Remove-AzDataProtectionBackupPolicy + +## SYNOPSIS +Deletes a backup policy belonging to a backup vault + +## SYNTAX + +### Delete (Default) +``` +Remove-AzDataProtectionBackupPolicy -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-DefaultProfile ] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### DeleteViaIdentity +``` +Remove-AzDataProtectionBackupPolicy -InputObject [-DefaultProfile ] + [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Deletes a backup policy belonging to a backup vault + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: DeleteViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Name +. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: BackupPolicyName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Remove-AzDataProtectionBackupVault.md b/src/DataProtection/docs/Remove-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..1aafb3194c07 --- /dev/null +++ b/src/DataProtection/docs/Remove-AzDataProtectionBackupVault.md @@ -0,0 +1,208 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupvault +schema: 2.0.0 +--- + +# Remove-AzDataProtectionBackupVault + +## SYNOPSIS +Deletes a BackupVault resource from the resource group. + +## SYNTAX + +### Delete (Default) +``` +Remove-AzDataProtectionBackupVault -ResourceGroupName -VaultName [-SubscriptionId ] + [-DefaultProfile ] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### DeleteViaIdentity +``` +Remove-AzDataProtectionBackupVault -InputObject [-DefaultProfile ] + [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Deletes a BackupVault resource from the resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: DeleteViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Remove-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/docs/Remove-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..62ee4897574b --- /dev/null +++ b/src/DataProtection/docs/Remove-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,208 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionresourceoperationgatekeeper +schema: 2.0.0 +--- + +# Remove-AzDataProtectionResourceOperationGatekeeper + +## SYNOPSIS +Deletes a ResourceOperationGateKeeper resource from the resource group. + +## SYNTAX + +### Delete (Default) +``` +Remove-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + [-SubscriptionId ] [-DefaultProfile ] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### DeleteViaIdentity +``` +Remove-AzDataProtectionResourceOperationGatekeeper -InputObject + [-DefaultProfile ] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Deletes a ResourceOperationGateKeeper resource from the resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: DeleteViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SName +The name of ResourceOperationGatekeeper + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: ResourceOperationGateKeepersName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Delete +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Set-AzDataProtectionBackupInstance.md b/src/DataProtection/docs/Set-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..4be6d28c84d9 --- /dev/null +++ b/src/DataProtection/docs/Set-AzDataProtectionBackupInstance.md @@ -0,0 +1,347 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupinstance +schema: 2.0.0 +--- + +# Set-AzDataProtectionBackupInstance + +## SYNOPSIS + + +## SYNTAX + +### PutExpanded (Default) +``` +Set-AzDataProtectionBackupInstance -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-Property ] [-DefaultProfile ] [-AsJob] [-NoWait] + [-Confirm] [-WhatIf] [] +``` + +### dppplatform +``` +Set-AzDataProtectionBackupInstance -DatasourceInfo -PolicyId -VaultId + [-Confirm] [-WhatIf] [] +``` + +### Put +``` +Set-AzDataProtectionBackupInstance -Name -ResourceGroupName -VaultName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-AsJob] + [-NoWait] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION + + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: Put, PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DatasourceInfo +Datasource Details +To construct, see NOTES section for DATASOURCEINFO properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource +Parameter Sets: dppplatform +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: Put, PutExpanded +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Put, PutExpanded +Aliases: BackupInstanceName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: Put, PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +BackupInstance Resource +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +Parameter Sets: Put +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PolicyId +Policy Id + +```yaml +Type: System.String +Parameter Sets: dppplatform +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Property +BackupInstanceResource properties +To construct, see NOTES section for PROPERTY properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Put, PutExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Put, PutExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultId +Vault Id + +```yaml +Type: System.String +Parameter Sets: dppplatform +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Put, PutExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +DATASOURCEINFO : Datasource Details + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[Type ]`: DatasourceType of the resource. + +PARAMETER : BackupInstance Resource + - `[Property ]`: BackupInstanceResource properties + - `DataSourceInfo `: Gets or sets the data source information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[Type ]`: DatasourceType of the resource. + - `PolicyInfo `: Gets or sets the policy information. + - `PolicyId `: + - `[DataSourceSetInfo ]`: Gets or sets the data source set information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[DatasourceType ]`: DatasourceType of the resource. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[ObjectType ]`: + +PROPERTY : BackupInstanceResource properties + - `DataSourceInfo `: Gets or sets the data source information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[Type ]`: DatasourceType of the resource. + - `PolicyInfo `: Gets or sets the policy information. + - `PolicyId `: + - `[DataSourceSetInfo ]`: Gets or sets the data source set information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[DatasourceType ]`: DatasourceType of the resource. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[ObjectType ]`: + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Set-AzDataProtectionBackupPolicy.md b/src/DataProtection/docs/Set-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..5c8321a5ecac --- /dev/null +++ b/src/DataProtection/docs/Set-AzDataProtectionBackupPolicy.md @@ -0,0 +1,231 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackuppolicy +schema: 2.0.0 +--- + +# Set-AzDataProtectionBackupPolicy + +## SYNOPSIS +Creates or Updates a backup policy belonging to a backup vault + +## SYNTAX + +### PutExpanded (Default) +``` +Set-AzDataProtectionBackupPolicy -Name -ResourceGroupName -VaultName + [-SubscriptionId ] [-DatasourceType ] [-ObjectType ] [-DefaultProfile ] + [-Confirm] [-WhatIf] [] +``` + +### Put +``` +Set-AzDataProtectionBackupPolicy -Name -ResourceGroupName -VaultName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-Confirm] + [-WhatIf] [] +``` + +## DESCRIPTION +Creates or Updates a backup policy belonging to a backup vault + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DatasourceType +Type of datasource for the backup management + +```yaml +Type: System.String[] +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: BackupPolicyName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ObjectType +. + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +BaseBackupPolicy resource +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +Parameter Sets: Put +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +PARAMETER : BaseBackupPolicy resource + - `DatasourceType `: Type of datasource for the backup management + - `ObjectType `: + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Set-AzDataProtectionBackupVault.md b/src/DataProtection/docs/Set-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..1232c8370b08 --- /dev/null +++ b/src/DataProtection/docs/Set-AzDataProtectionBackupVault.md @@ -0,0 +1,302 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupvault +schema: 2.0.0 +--- + +# Set-AzDataProtectionBackupVault + +## SYNOPSIS +Creates or updates a BackupVault resource belonging to a resource group. + +## SYNTAX + +### PutExpanded (Default) +``` +Set-AzDataProtectionBackupVault -ResourceGroupName -VaultName [-SubscriptionId ] + [-ETag ] [-IdentityType ] [-Location ] [-StorageSetting ] + [-Tag ] [-DefaultProfile ] [-AsJob] [-NoWait] [-Confirm] [-WhatIf] [] +``` + +### Put +``` +Set-AzDataProtectionBackupVault -ResourceGroupName -VaultName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-AsJob] [-NoWait] + [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Creates or updates a BackupVault resource belonging to a resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ETag +Optional ETag. + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IdentityType +The identityType which can be either SystemAssigned or None + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Location +Resource location. + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Backup Vault Resource +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +Parameter Sets: Put +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -StorageSetting +Storage Settings +To construct, see NOTES section for STORAGESETTING properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +Resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +PARAMETER : Backup Vault Resource + - `[ETag ]`: Optional ETag. + - `[IdentityType ]`: The identityType which can be either SystemAssigned or None + - `[Location ]`: Resource location. + - `[Tag ]`: Resource tags. + - `[(Any) ]`: This indicates any property can be added to this object. + - `[StorageSetting ]`: Storage Settings + - `[DataStoreType ]`: Gets or sets the type of the datastore. + - `[Type ]`: Gets or sets the type. + +STORAGESETTING : Storage Settings + - `[DataStoreType ]`: Gets or sets the type of the datastore. + - `[Type ]`: Gets or sets the type. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Set-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/docs/Set-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..1b8777480780 --- /dev/null +++ b/src/DataProtection/docs/Set-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,249 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionresourceoperationgatekeeper +schema: 2.0.0 +--- + +# Set-AzDataProtectionResourceOperationGatekeeper + +## SYNOPSIS +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + +## SYNTAX + +### PutExpanded (Default) +``` +Set-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + [-SubscriptionId ] [-ETag ] [-IdentityType ] [-Location ] [-Tag ] + [-DefaultProfile ] [-Confirm] [-WhatIf] [] +``` + +### Put +``` +Set-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + -Parameter [-SubscriptionId ] [-DefaultProfile ] + [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ETag +Optional ETag. + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IdentityType +The identityType which can be either SystemAssigned or None + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Location +Resource location. + +```yaml +Type: System.String +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +ResourceOperationGateKeeper Resource +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +Parameter Sets: Put +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SName +The name of ResourceOperationGatekeeper + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: ResourceOperationGateKeepersName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +Resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: PutExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +PARAMETER : ResourceOperationGateKeeper Resource + - `[ETag ]`: Optional ETag. + - `[IdentityType ]`: The identityType which can be either SystemAssigned or None + - `[Location ]`: Resource location. + - `[Tag ]`: Resource tags. + - `[(Any) ]`: This indicates any property can be added to this object. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRehydrate.md b/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRehydrate.md new file mode 100644 index 000000000000..32c69b5ad734 --- /dev/null +++ b/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRehydrate.md @@ -0,0 +1,339 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerehydrate +schema: 2.0.0 +--- + +# Start-AzDataProtectionBackupInstanceRehydrate + +## SYNOPSIS +rehydrate recovery point for restore for a BackupInstance + +## SYNTAX + +### TriggerExpanded (Default) +``` +Start-AzDataProtectionBackupInstanceRehydrate -BackupInstanceName -ResourceGroupName + -VaultName -RecoveryPointId -RehydrationRetentionDuration + [-SubscriptionId ] [-RehydrationPriority ] [-DefaultProfile ] [-AsJob] + [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### Trigger +``` +Start-AzDataProtectionBackupInstanceRehydrate -BackupInstanceName -ResourceGroupName + -VaultName -Parameter [-SubscriptionId ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### TriggerViaIdentity +``` +Start-AzDataProtectionBackupInstanceRehydrate -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### TriggerViaIdentityExpanded +``` +Start-AzDataProtectionBackupInstanceRehydrate -InputObject -RecoveryPointId + -RehydrationRetentionDuration [-RehydrationPriority ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +rehydrate recovery point for restore for a BackupInstance + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupInstanceName +. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: TriggerViaIdentity, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Azure Backup Rehydrate Request +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest +Parameter Sets: Trigger, TriggerViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RecoveryPointId +Id of the recovery point to be recovered + +```yaml +Type: System.String +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RehydrationPriority +Priority to be used for rehydration. +Values High or Standard + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RehydrationRetentionDuration +Retention duration in ISO 8601 format i.e P10D . + +```yaml +Type: System.String +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Azure Backup Rehydrate Request + - `RecoveryPointId `: Id of the recovery point to be recovered + - `RehydrationRetentionDuration `: Retention duration in ISO 8601 format i.e P10D . + - `[RehydrationPriority ]`: Priority to be used for rehydration. Values High or Standard + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRestore.md b/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRestore.md new file mode 100644 index 000000000000..12dd2a6dc6b9 --- /dev/null +++ b/src/DataProtection/docs/Start-AzDataProtectionBackupInstanceRestore.md @@ -0,0 +1,356 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerestore +schema: 2.0.0 +--- + +# Start-AzDataProtectionBackupInstanceRestore + +## SYNOPSIS +Triggers restore for a BackupInstance + +## SYNTAX + +### TriggerExpanded (Default) +``` +Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName -ResourceGroupName + -VaultName -ObjectType -RestoreTargetInfoObjectType + -SourceDataStoreType [-SubscriptionId ] + [-RestoreTargetInfoRestoreLocation ] [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### Trigger +``` +Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName -ResourceGroupName + -VaultName -Parameter [-SubscriptionId ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### TriggerViaIdentity +``` +Start-AzDataProtectionBackupInstanceRestore -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### TriggerViaIdentityExpanded +``` +Start-AzDataProtectionBackupInstanceRestore -InputObject -ObjectType + -RestoreTargetInfoObjectType -SourceDataStoreType + [-RestoreTargetInfoRestoreLocation ] [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Triggers restore for a BackupInstance + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupInstanceName +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: TriggerViaIdentity, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ObjectType +. + +```yaml +Type: System.String +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Azure backup restore request +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest +Parameter Sets: Trigger, TriggerViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreTargetInfoObjectType +Type of Datasource object, used to initialize the right inherited type + +```yaml +Type: System.String +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreTargetInfoRestoreLocation +Target Restore region + +```yaml +Type: System.String +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SourceDataStoreType +Gets or sets the type of the source data store. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType +Parameter Sets: TriggerExpanded, TriggerViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Trigger, TriggerExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Azure backup restore request + - `ObjectType `: + - `RestoreTargetInfoObjectType `: Type of Datasource object, used to initialize the right inherited type + - `SourceDataStoreType `: Gets or sets the type of the source data store. + - `[RestoreTargetInfoRestoreLocation ]`: Target Restore region + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Start-AzDataProtectionExportJob.md b/src/DataProtection/docs/Start-AzDataProtectionExportJob.md new file mode 100644 index 000000000000..71670e57c576 --- /dev/null +++ b/src/DataProtection/docs/Start-AzDataProtectionExportJob.md @@ -0,0 +1,238 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionexportjob +schema: 2.0.0 +--- + +# Start-AzDataProtectionExportJob + +## SYNOPSIS +Triggers export of jobs and returns an OperationID to track. + +## SYNTAX + +### Trigger (Default) +``` +Start-AzDataProtectionExportJob -ResourceGroupName -VaultName [-SubscriptionId ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### TriggerViaIdentity +``` +Start-AzDataProtectionExportJob -InputObject [-DefaultProfile ] [-AsJob] + [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Triggers export of jobs and returns an OperationID to track. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: TriggerViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Trigger +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Trigger +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Trigger +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Test-AzDataProtectionBackupInstance.md b/src/DataProtection/docs/Test-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..d6496c2026b5 --- /dev/null +++ b/src/DataProtection/docs/Test-AzDataProtectionBackupInstance.md @@ -0,0 +1,330 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstance +schema: 2.0.0 +--- + +# Test-AzDataProtectionBackupInstance + +## SYNOPSIS +Validate whether adhoc backup will be successful or not + +## SYNTAX + +### ValidateViaIdentity (Default) +``` +Test-AzDataProtectionBackupInstance -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] + [-WhatIf] [] +``` + +### Validate +``` +Test-AzDataProtectionBackupInstance -ResourceGroupName -VaultName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-AsJob] + [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### ValidateExpanded +``` +Test-AzDataProtectionBackupInstance -ResourceGroupName -VaultName + -BackupInstance [-SubscriptionId ] [-DefaultProfile ] [-AsJob] [-NoWait] + [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### ValidateViaIdentityExpanded +``` +Test-AzDataProtectionBackupInstance -InputObject -BackupInstance + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Validate whether adhoc backup will be successful or not + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupInstance +Backup instance +To construct, see NOTES section for BACKUPINSTANCE properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance +Parameter Sets: ValidateExpanded, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: ValidateViaIdentity, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Validate for backup request +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest +Parameter Sets: Validate, ValidateViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +BACKUPINSTANCE : Backup instance + - `DataSourceInfo `: Gets or sets the data source information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[Type ]`: DatasourceType of the resource. + - `PolicyInfo `: Gets or sets the policy information. + - `PolicyId `: + - `[DataSourceSetInfo ]`: Gets or sets the data source set information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[DatasourceType ]`: DatasourceType of the resource. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[ObjectType ]`: + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Validate for backup request + - `BackupInstance `: Backup instance + - `DataSourceInfo `: Gets or sets the data source information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[Type ]`: DatasourceType of the resource. + - `PolicyInfo `: Gets or sets the policy information. + - `PolicyId `: + - `[DataSourceSetInfo ]`: Gets or sets the data source set information. + - `ResourceId `: Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + - `[DatasourceType ]`: DatasourceType of the resource. + - `[ObjectType ]`: Type of Datasource object, used to initialize the right inherited type + - `[ResourceLocation ]`: Location of datasource. + - `[ResourceName ]`: Unique identifier of the resource in the context of parent. + - `[ResourceType ]`: Resource Type of Datasource. + - `[ResourceUri ]`: Uri of the resource. + - `[ObjectType ]`: + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Test-AzDataProtectionBackupInstanceRestore.md b/src/DataProtection/docs/Test-AzDataProtectionBackupInstanceRestore.md new file mode 100644 index 000000000000..03671d56c5cd --- /dev/null +++ b/src/DataProtection/docs/Test-AzDataProtectionBackupInstanceRestore.md @@ -0,0 +1,356 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstancerestore +schema: 2.0.0 +--- + +# Test-AzDataProtectionBackupInstanceRestore + +## SYNOPSIS +Validates if Restore can be triggered for a DataSource + +## SYNTAX + +### ValidateExpanded (Default) +``` +Test-AzDataProtectionBackupInstanceRestore -BackupInstanceName -ResourceGroupName + -VaultName -RestoreRequestObjectSourceDataStoreType + -RestoreRequestObjectType -RestoreTargetInfoObjectType [-SubscriptionId ] + [-RestoreTargetInfoRestoreLocation ] [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### Validate +``` +Test-AzDataProtectionBackupInstanceRestore -BackupInstanceName -ResourceGroupName + -VaultName -Parameter [-SubscriptionId ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +### ValidateViaIdentity +``` +Test-AzDataProtectionBackupInstanceRestore -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] + [-Confirm] [-WhatIf] [] +``` + +### ValidateViaIdentityExpanded +``` +Test-AzDataProtectionBackupInstanceRestore -InputObject + -RestoreRequestObjectSourceDataStoreType -RestoreRequestObjectType + -RestoreTargetInfoObjectType [-RestoreTargetInfoRestoreLocation ] + [-DefaultProfile ] [-AsJob] [-NoWait] [-PassThru] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Validates if Restore can be triggered for a DataSource + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -BackupInstanceName +The name of the backup instance + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: ValidateViaIdentity, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Validate restore request object +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject +Parameter Sets: Validate, ValidateViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -PassThru +Returns true when the command succeeds + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreRequestObjectSourceDataStoreType +Gets or sets the type of the source data store. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType +Parameter Sets: ValidateExpanded, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreRequestObjectType +. + +```yaml +Type: System.String +Parameter Sets: ValidateExpanded, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreTargetInfoObjectType +Type of Datasource object, used to initialize the right inherited type + +```yaml +Type: System.String +Parameter Sets: ValidateExpanded, ValidateViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -RestoreTargetInfoRestoreLocation +Target Restore region + +```yaml +Type: System.String +Parameter Sets: ValidateExpanded, ValidateViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Validate, ValidateExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### System.Boolean + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Validate restore request object + - `RestoreRequestObjectSourceDataStoreType `: Gets or sets the type of the source data store. + - `RestoreRequestObjectType `: + - `RestoreTargetInfoObjectType `: Type of Datasource object, used to initialize the right inherited type + - `[RestoreTargetInfoRestoreLocation ]`: Target Restore region + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Test-AzDataProtectionBackupVaultNameAvailability.md b/src/DataProtection/docs/Test-AzDataProtectionBackupVaultNameAvailability.md new file mode 100644 index 000000000000..a247897176ff --- /dev/null +++ b/src/DataProtection/docs/Test-AzDataProtectionBackupVaultNameAvailability.md @@ -0,0 +1,260 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupvaultnameavailability +schema: 2.0.0 +--- + +# Test-AzDataProtectionBackupVaultNameAvailability + +## SYNOPSIS +API to check for resource name availability + +## SYNTAX + +### CheckExpanded (Default) +``` +Test-AzDataProtectionBackupVaultNameAvailability -Location -ResourceGroupName + [-SubscriptionId ] [-Name ] [-Type ] [-DefaultProfile ] [-Confirm] + [-WhatIf] [] +``` + +### Check +``` +Test-AzDataProtectionBackupVaultNameAvailability -Location -ResourceGroupName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-Confirm] + [-WhatIf] [] +``` + +### CheckViaIdentity +``` +Test-AzDataProtectionBackupVaultNameAvailability -InputObject + -Parameter [-DefaultProfile ] [-Confirm] [-WhatIf] + [] +``` + +### CheckViaIdentityExpanded +``` +Test-AzDataProtectionBackupVaultNameAvailability -InputObject [-Name ] + [-Type ] [-DefaultProfile ] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +API to check for resource name availability + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: CheckViaIdentity, CheckViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Location +The location in which uniqueness will be verified. + +```yaml +Type: System.String +Parameter Sets: Check, CheckExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Name +Resource name for which availability needs to be checked + +```yaml +Type: System.String +Parameter Sets: CheckExpanded, CheckViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +CheckNameAvailability Request +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest +Parameter Sets: Check, CheckViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Check, CheckExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Check, CheckExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Type +Describes the Resource type: Microsoft.DataProtection/BackupVaults + +```yaml +Type: System.String +Parameter Sets: CheckExpanded, CheckViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : CheckNameAvailability Request + - `[Name ]`: Resource name for which availability needs to be checked + - `[Type ]`: Describes the Resource type: Microsoft.DataProtection/BackupVaults + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Update-AzDataProtectionBackupVault.md b/src/DataProtection/docs/Update-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..f60dba3d9ce9 --- /dev/null +++ b/src/DataProtection/docs/Update-AzDataProtectionBackupVault.md @@ -0,0 +1,293 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionbackupvault +schema: 2.0.0 +--- + +# Update-AzDataProtectionBackupVault + +## SYNOPSIS +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. + +## SYNTAX + +### PatchExpanded (Default) +``` +Update-AzDataProtectionBackupVault -ResourceGroupName -VaultName [-SubscriptionId ] + [-IdentityType ] [-Tag ] [-DefaultProfile ] [-AsJob] [-NoWait] [-Confirm] + [-WhatIf] [] +``` + +### Patch +``` +Update-AzDataProtectionBackupVault -ResourceGroupName -VaultName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-AsJob] + [-NoWait] [-Confirm] [-WhatIf] [] +``` + +### PatchViaIdentity +``` +Update-AzDataProtectionBackupVault -InputObject + -Parameter [-DefaultProfile ] [-AsJob] [-NoWait] [-Confirm] [-WhatIf] + [] +``` + +### PatchViaIdentityExpanded +``` +Update-AzDataProtectionBackupVault -InputObject [-IdentityType ] + [-Tag ] [-DefaultProfile ] [-AsJob] [-NoWait] [-Confirm] [-WhatIf] [] +``` + +## DESCRIPTION +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -AsJob +Run the command as a job + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IdentityType +The identityType which can be either SystemAssigned or None + +```yaml +Type: System.String +Parameter Sets: PatchExpanded, PatchViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: PatchViaIdentity, PatchViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -NoWait +Run the command asynchronously + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Parameter +Patch Request content for Microsoft.DataProtection resources +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +Parameter Sets: Patch, PatchViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +Resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: PatchExpanded, PatchViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -VaultName +The name of the backup vault. + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + - `[IdentityType ]`: The identityType which can be either SystemAssigned or None + - `[Tag ]`: Resource tags. + - `[(Any) ]`: This indicates any property can be added to this object. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/Update-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/docs/Update-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..c4f69461b31b --- /dev/null +++ b/src/DataProtection/docs/Update-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,264 @@ +--- +external help file: +Module Name: Az.DataProtection +online version: https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionresourceoperationgatekeeper +schema: 2.0.0 +--- + +# Update-AzDataProtectionResourceOperationGatekeeper + +## SYNOPSIS +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. + +## SYNTAX + +### PatchExpanded (Default) +``` +Update-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + [-SubscriptionId ] [-IdentityType ] [-Tag ] [-DefaultProfile ] + [-Confirm] [-WhatIf] [] +``` + +### Patch +``` +Update-AzDataProtectionResourceOperationGatekeeper -ResourceGroupName -SName + -Parameter [-SubscriptionId ] [-DefaultProfile ] [-Confirm] + [-WhatIf] [] +``` + +### PatchViaIdentity +``` +Update-AzDataProtectionResourceOperationGatekeeper -InputObject + -Parameter [-DefaultProfile ] [-Confirm] [-WhatIf] + [] +``` + +### PatchViaIdentityExpanded +``` +Update-AzDataProtectionResourceOperationGatekeeper -InputObject + [-IdentityType ] [-Tag ] [-DefaultProfile ] [-Confirm] [-WhatIf] + [] +``` + +## DESCRIPTION +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. + +## EXAMPLES + +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +## PARAMETERS + +### -DefaultProfile +The credentials, account, tenant, and subscription used for communication with Azure. + +```yaml +Type: System.Management.Automation.PSObject +Parameter Sets: (All) +Aliases: AzureRMContext, AzureCredential + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IdentityType +The identityType which can be either SystemAssigned or None + +```yaml +Type: System.String +Parameter Sets: PatchExpanded, PatchViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -InputObject +Identity Parameter +To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +Parameter Sets: PatchViaIdentity, PatchViaIdentityExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -Parameter +Patch Request content for Microsoft.DataProtection resources +To construct, see NOTES section for PARAMETER properties and create a hash table. + +```yaml +Type: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +Parameter Sets: Patch, PatchViaIdentity +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: True (ByValue) +Accept wildcard characters: False +``` + +### -ResourceGroupName +The name of the resource group where the backup vault is present. + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SName +The name of ResourceOperationGatekeeper + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: ResourceOperationGateKeepersName + +Required: True +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -SubscriptionId +The subscription Id. + +```yaml +Type: System.String +Parameter Sets: Patch, PatchExpanded +Aliases: + +Required: False +Position: Named +Default value: (Get-AzContext).Subscription.Id +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Tag +Resource tags. + +```yaml +Type: System.Collections.Hashtable +Parameter Sets: PatchExpanded, PatchViaIdentityExpanded +Aliases: + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -WhatIf +Shows what would happen if the cmdlet runs. +The cmdlet is not run. + +```yaml +Type: System.Management.Automation.SwitchParameter +Parameter Sets: (All) +Aliases: wi + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### CommonParameters +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity + +## OUTPUTS + +### Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + +## NOTES + +ALIASES + +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + + +INPUTOBJECT : Identity Parameter + - `[BackupInstanceName ]`: The name of the backup instance + - `[BackupPolicyName ]`: + - `[Id ]`: Resource identity path + - `[JobId ]`: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + - `[Location ]`: The location in which uniqueness will be verified. + - `[OperationId ]`: + - `[RecoveryPointId ]`: + - `[ResourceGroupName ]`: The name of the resource group where the backup vault is present. + - `[ResourceOperationGateKeepersName ]`: The name of the ResourceOperationGateKeeper + - `[SubscriptionId ]`: The subscription Id. + - `[VaultName ]`: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + - `[IdentityType ]`: The identityType which can be either SystemAssigned or None + - `[Tag ]`: Resource tags. + - `[(Any) ]`: This indicates any property can be added to this object. + +## RELATED LINKS + diff --git a/src/DataProtection/docs/readme.md b/src/DataProtection/docs/readme.md new file mode 100644 index 000000000000..fbb8090c51f0 --- /dev/null +++ b/src/DataProtection/docs/readme.md @@ -0,0 +1,11 @@ +# Docs +This directory contains the documentation of the cmdlets for the `Az.DataProtection` module. To run documentation generation, use the `generate-help.ps1` script at the root module folder. Files in this folder will *always be overriden on regeneration*. To update documentation examples, please use the `..\examples` folder. + +## Info +- Modifiable: no +- Generated: all +- Committed: yes +- Packaged: yes + +## Details +The process of documentation generation loads `Az.DataProtection` and analyzes the exported cmdlets from the module. It recognizes the [help comments](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help) that are generated into the scripts in the `..\exports` folder. Additionally, when writing custom cmdlets in the `..\custom` folder, you can use the help comments syntax, which decorate the exported scripts at build-time. The documentation examples are taken from the `..\examples` folder. \ No newline at end of file diff --git a/src/DataProtection/examples/Backup-AzDataProtectionBackupInstanceAdhoc.md b/src/DataProtection/examples/Backup-AzDataProtectionBackupInstanceAdhoc.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Backup-AzDataProtectionBackupInstanceAdhoc.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionBackupInstance.md b/src/DataProtection/examples/Get-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionBackupInstance.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionBackupPolicy.md b/src/DataProtection/examples/Get-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionBackupPolicy.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionBackupVault.md b/src/DataProtection/examples/Get-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionBackupVault.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionBackupVaultResource.md b/src/DataProtection/examples/Get-AzDataProtectionBackupVaultResource.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionBackupVaultResource.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionExportJobsOperationResult.md b/src/DataProtection/examples/Get-AzDataProtectionExportJobsOperationResult.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionExportJobsOperationResult.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionJob.md b/src/DataProtection/examples/Get-AzDataProtectionJob.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionJob.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionOperationResult.md b/src/DataProtection/examples/Get-AzDataProtectionOperationResult.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionOperationResult.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionOperationStatus.md b/src/DataProtection/examples/Get-AzDataProtectionOperationStatus.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionOperationStatus.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionRecoveryPoint.md b/src/DataProtection/examples/Get-AzDataProtectionRecoveryPoint.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionRecoveryPoint.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionRecoveryPointList.md b/src/DataProtection/examples/Get-AzDataProtectionRecoveryPointList.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionRecoveryPointList.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeperResource.md b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeperResource.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationGatekeeperResource.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Get-AzDataProtectionResourceOperationResultPatch.md b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationResultPatch.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Get-AzDataProtectionResourceOperationResultPatch.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Prepare-AzDataProtectionDatasourceInfo.md b/src/DataProtection/examples/Prepare-AzDataProtectionDatasourceInfo.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Prepare-AzDataProtectionDatasourceInfo.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Remove-AzDataProtectionBackupInstance.md b/src/DataProtection/examples/Remove-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Remove-AzDataProtectionBackupInstance.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Remove-AzDataProtectionBackupPolicy.md b/src/DataProtection/examples/Remove-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Remove-AzDataProtectionBackupPolicy.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Remove-AzDataProtectionBackupVault.md b/src/DataProtection/examples/Remove-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Remove-AzDataProtectionBackupVault.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Remove-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/examples/Remove-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Remove-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Set-AzDataProtectionBackupInstance.md b/src/DataProtection/examples/Set-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Set-AzDataProtectionBackupInstance.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Set-AzDataProtectionBackupPolicy.md b/src/DataProtection/examples/Set-AzDataProtectionBackupPolicy.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Set-AzDataProtectionBackupPolicy.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Set-AzDataProtectionBackupVault.md b/src/DataProtection/examples/Set-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Set-AzDataProtectionBackupVault.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Set-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/examples/Set-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Set-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRehydrate.md b/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRehydrate.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRehydrate.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRestore.md b/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRestore.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Start-AzDataProtectionBackupInstanceRestore.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Start-AzDataProtectionExportJob.md b/src/DataProtection/examples/Start-AzDataProtectionExportJob.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Start-AzDataProtectionExportJob.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Test-AzDataProtectionBackupInstance.md b/src/DataProtection/examples/Test-AzDataProtectionBackupInstance.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Test-AzDataProtectionBackupInstance.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Test-AzDataProtectionBackupInstanceRestore.md b/src/DataProtection/examples/Test-AzDataProtectionBackupInstanceRestore.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Test-AzDataProtectionBackupInstanceRestore.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Test-AzDataProtectionBackupVaultNameAvailability.md b/src/DataProtection/examples/Test-AzDataProtectionBackupVaultNameAvailability.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Test-AzDataProtectionBackupVaultNameAvailability.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Update-AzDataProtectionBackupVault.md b/src/DataProtection/examples/Update-AzDataProtectionBackupVault.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Update-AzDataProtectionBackupVault.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/examples/Update-AzDataProtectionResourceOperationGatekeeper.md b/src/DataProtection/examples/Update-AzDataProtectionResourceOperationGatekeeper.md new file mode 100644 index 000000000000..093355d11d50 --- /dev/null +++ b/src/DataProtection/examples/Update-AzDataProtectionResourceOperationGatekeeper.md @@ -0,0 +1,18 @@ +### Example 1: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + +### Example 2: {{ Add title here }} +```powershell +PS C:\> {{ Add code here }} + +{{ Add output here }} +``` + +{{ Add description here }} + diff --git a/src/DataProtection/export-surface.ps1 b/src/DataProtection/export-surface.ps1 new file mode 100644 index 000000000000..9334f2151dcf --- /dev/null +++ b/src/DataProtection/export-surface.ps1 @@ -0,0 +1,40 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +param([switch]$Isolated, [switch]$IncludeGeneralParameters, [switch]$UseExpandedFormat) +$ErrorActionPreference = 'Stop' + +$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().Path +if(-not $Isolated) { + Write-Host -ForegroundColor Green 'Creating isolated process...' + & "$pwsh" -NonInteractive -NoLogo -NoProfile -File $MyInvocation.MyCommand.Path @PSBoundParameters -Isolated + return +} + +$dll = Join-Path $PSScriptRoot 'bin\Az.DataProtection.private.dll' +if(-not (Test-Path $dll)) { + Write-Error "Unable to find output assembly in '$binFolder'." +} +$null = Import-Module -Name $dll + +$moduleName = 'Az.DataProtection' +$exportsFolder = Join-Path $PSScriptRoot 'exports' +$resourcesFolder = Join-Path $PSScriptRoot 'resources' + +Export-CmdletSurface -ModuleName $moduleName -CmdletFolder $exportsFolder -OutputFolder $resourcesFolder -IncludeGeneralParameters $IncludeGeneralParameters.IsPresent -UseExpandedFormat $UseExpandedFormat.IsPresent +Write-Host -ForegroundColor Green "CmdletSurface file(s) created in '$resourcesFolder'" + +Export-ModelSurface -OutputFolder $resourcesFolder -UseExpandedFormat $UseExpandedFormat.IsPresent +Write-Host -ForegroundColor Green "ModelSurface file created in '$resourcesFolder'" + +Write-Host -ForegroundColor Green '-------------Done-------------' \ No newline at end of file diff --git a/src/DataProtection/exports/Backup-AzDataProtectionBackupInstanceAdhoc.ps1 b/src/DataProtection/exports/Backup-AzDataProtectionBackupInstanceAdhoc.ps1 new file mode 100644 index 000000000000..bc75886f2e7c --- /dev/null +++ b/src/DataProtection/exports/Backup-AzDataProtectionBackupInstanceAdhoc.ps1 @@ -0,0 +1,229 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Trigger adhoc backup +.Description +Trigger adhoc backup +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Trigger backup request + BackupRuleOptionRuleName : + [TriggerOptionRetentionTagOverride ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/backup-azdataprotectionbackupinstanceadhoc +#> +function Backup-AzDataProtectionBackupInstanceAdhoc { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='BackupExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Backup')] + [Parameter(ParameterSetName='BackupExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='BackupViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='BackupViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Backup', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='BackupViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest] + # Trigger backup request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Parameter(ParameterSetName='BackupViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${BackupRuleOptionRuleName}, + + [Parameter(ParameterSetName='BackupExpanded')] + [Parameter(ParameterSetName='BackupViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${TriggerOptionRetentionTagOverride}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Backup = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_Backup'; + BackupExpanded = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupExpanded'; + BackupViaIdentity = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupViaIdentity'; + BackupViaIdentityExpanded = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded'; + } + if (('Backup', 'BackupExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/exports/Get-AzDataProtectionBackupInstance.ps1 new file mode 100644 index 000000000000..5021a4a76b09 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionBackupInstance.ps1 @@ -0,0 +1,183 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a backup instances belonging to a backup vault +.Description +Gets a backup instances belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupinstance +#> +function Get-AzDataProtectionBackupInstance { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionBackupPolicy.ps1 b/src/DataProtection/exports/Get-AzDataProtectionBackupPolicy.ps1 new file mode 100644 index 000000000000..093f21ec7014 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionBackupPolicy.ps1 @@ -0,0 +1,181 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a backup policy belonging to a backup vault +.Description +Gets a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackuppolicy +#> +function Get-AzDataProtectionBackupPolicy { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='List')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_GetViaIdentity'; + List = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_List'; + } + if (('Get', 'List') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionBackupVault.ps1 b/src/DataProtection/exports/Get-AzDataProtectionBackupVault.ps1 new file mode 100644 index 000000000000..8e2a748e6866 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionBackupVault.ps1 @@ -0,0 +1,170 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a resource belonging to a resource group. +.Description +Returns a resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvault +#> +function Get-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupVault_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupVault_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionBackupVaultResource.ps1 b/src/DataProtection/exports/Get-AzDataProtectionBackupVaultResource.ps1 new file mode 100644 index 000000000000..5b45e871ac7e --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionBackupVaultResource.ps1 @@ -0,0 +1,168 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns resource collection belonging to a subscription. +.Description +Returns resource collection belonging to a subscription. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvaultresource +#> +function Get-AzDataProtectionBackupVaultResource { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionExportJobsOperationResult.ps1 b/src/DataProtection/exports/Get-AzDataProtectionExportJobsOperationResult.ps1 new file mode 100644 index 000000000000..c1ecb121f1a4 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionExportJobsOperationResult.ps1 @@ -0,0 +1,186 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. +.Description +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionexportjobsoperationresult +#> +function Get-AzDataProtectionExportJobsOperationResult { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # OperationID which represents the export job. + ${OperationId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionExportJobsOperationResult_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionExportJobsOperationResult_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionJob.ps1 b/src/DataProtection/exports/Get-AzDataProtectionJob.ps1 new file mode 100644 index 000000000000..9fe80c5cc73e --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionJob.ps1 @@ -0,0 +1,183 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a job with id in a backup vault +.Description +Gets a job with id in a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionjob +#> +function Get-AzDataProtectionJob { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('JobId')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The Job ID. + # This is a GUID-formatted string (e.g. + # 00000000-0000-0000-0000-000000000000). + ${Id}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='List')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionJob_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionJob_GetViaIdentity'; + List = 'Az.DataProtection.private\Get-AzDataProtectionJob_List'; + } + if (('Get', 'List') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionOperationResult.ps1 b/src/DataProtection/exports/Get-AzDataProtectionOperationResult.ps1 new file mode 100644 index 000000000000..ff7dc4bc0fba --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionOperationResult.ps1 @@ -0,0 +1,176 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation result for a resource +.Description +Gets the operation result for a resource +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationresult +#> +function Get-AzDataProtectionOperationResult { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Location}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionOperationResult_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionOperationResult_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionOperationStatus.ps1 b/src/DataProtection/exports/Get-AzDataProtectionOperationStatus.ps1 new file mode 100644 index 000000000000..5c950c8fb471 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionOperationStatus.ps1 @@ -0,0 +1,170 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation status for a resource. +.Description +Gets the operation status for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationstatus +#> +function Get-AzDataProtectionOperationStatus { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Location}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionOperationStatus_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionOperationStatus_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionRecoveryPoint.ps1 b/src/DataProtection/exports/Get-AzDataProtectionRecoveryPoint.ps1 new file mode 100644 index 000000000000..2cb8f63a2022 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionRecoveryPoint.ps1 @@ -0,0 +1,183 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a Recovery Point using recoveryPointId for a Datasource. +.Description +Gets a Recovery Point using recoveryPointId for a Datasource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypoint +#> +function Get-AzDataProtectionRecoveryPoint { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('RecoveryPointId')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Id}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPoint_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPoint_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionRecoveryPointList.ps1 b/src/DataProtection/exports/Get-AzDataProtectionRecoveryPointList.ps1 new file mode 100644 index 000000000000..58f8aa92e089 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionRecoveryPointList.ps1 @@ -0,0 +1,176 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a list of Recovery Points for a DataSource in a vault. +.Description +Returns a list of Recovery Points for a DataSource in a vault. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypointlist +#> +function Get-AzDataProtectionRecoveryPointList { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPointList_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPointList_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeper.ps1 b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeper.ps1 new file mode 100644 index 000000000000..b0f87295120e --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeper.ps1 @@ -0,0 +1,171 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a ResourceOperationGateKeeper belonging to a resource group. +.Description +Returns a ResourceOperationGateKeeper belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeper +#> +function Get-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the ResourceOperationGateKeeper + ${SName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeper_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeper_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeperResource.ps1 b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeperResource.ps1 new file mode 100644 index 000000000000..48b6d056e994 --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationGatekeeperResource.ps1 @@ -0,0 +1,168 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns ResourceOperationGateKeepers collection belonging to a subscription. +.Description +Returns ResourceOperationGateKeepers collection belonging to a subscription. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeperresource +#> +function Get-AzDataProtectionResourceOperationGatekeeperResource { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Get-AzDataProtectionResourceOperationResultPatch.ps1 b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationResultPatch.ps1 new file mode 100644 index 000000000000..36e591145ddb --- /dev/null +++ b/src/DataProtection/exports/Get-AzDataProtectionResourceOperationResultPatch.ps1 @@ -0,0 +1,182 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationresultpatch +#> +function Get-AzDataProtectionResourceOperationResultPatch { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationResultPatch_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationResultPatch_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Prepare-AzDataProtectionDatasourceInfo.ps1 b/src/DataProtection/exports/Prepare-AzDataProtectionDatasourceInfo.ps1 new file mode 100644 index 000000000000..d252a34d7544 --- /dev/null +++ b/src/DataProtection/exports/Prepare-AzDataProtectionDatasourceInfo.ps1 @@ -0,0 +1,117 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Prepares Datasource object for backup +.Description +Prepares Datasource object for backup +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/prepare-azdataprotectiondatasourceinfo +#> +function Prepare-AzDataProtectionDatasourceInfo { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource])] +[CmdletBinding(DefaultParameterSetName='GetById', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Location of Datasource + ${Location}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Datasource Type + ${DatasourceType}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Name the datasource to be protected + ${Name}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Subscription ID of the datasource to be protected + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # ResourceGroup of the datasource to be protected + ${ResourceGroup}, + + [Parameter(ParameterSetName='GetByName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Server name of the datasource to be protected + ${ParentServerName}, + + [Parameter(ParameterSetName='GetById', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # ARM ID of the datasource to be protected + ${DatasourceId} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + GetByName = 'Az.DataProtection.custom\Prepare-AzDataProtectionDatasourceInfo'; + GetById = 'Az.DataProtection.custom\Prepare-AzDataProtectionDatasourceInfo'; + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/ProxyCmdletDefinitions.ps1 b/src/DataProtection/exports/ProxyCmdletDefinitions.ps1 new file mode 100644 index 000000000000..23ddde64d19d --- /dev/null +++ b/src/DataProtection/exports/ProxyCmdletDefinitions.ps1 @@ -0,0 +1,6034 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Trigger adhoc backup +.Description +Trigger adhoc backup +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Trigger backup request + BackupRuleOptionRuleName : + [TriggerOptionRetentionTagOverride ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/backup-azdataprotectionbackupinstanceadhoc +#> +function Backup-AzDataProtectionBackupInstanceAdhoc { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='BackupExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Backup')] + [Parameter(ParameterSetName='BackupExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Backup', Mandatory)] + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='BackupViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='BackupViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Backup', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='BackupViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest] + # Trigger backup request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='BackupExpanded', Mandatory)] + [Parameter(ParameterSetName='BackupViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${BackupRuleOptionRuleName}, + + [Parameter(ParameterSetName='BackupExpanded')] + [Parameter(ParameterSetName='BackupViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${TriggerOptionRetentionTagOverride}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Backup = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_Backup'; + BackupExpanded = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupExpanded'; + BackupViaIdentity = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupViaIdentity'; + BackupViaIdentityExpanded = 'Az.DataProtection.private\Backup-AzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded'; + } + if (('Backup', 'BackupExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a backup instances belonging to a backup vault +.Description +Gets a backup instances belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupinstance +#> +function Get-AzDataProtectionBackupInstance { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupInstance_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a backup policy belonging to a backup vault +.Description +Gets a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackuppolicy +#> +function Get-AzDataProtectionBackupPolicy { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='List')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_GetViaIdentity'; + List = 'Az.DataProtection.private\Get-AzDataProtectionBackupPolicy_List'; + } + if (('Get', 'List') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns resource collection belonging to a subscription. +.Description +Returns resource collection belonging to a subscription. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvaultresource +#> +function Get-AzDataProtectionBackupVaultResource { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionBackupVaultResource_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a resource belonging to a resource group. +.Description +Returns a resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionbackupvault +#> +function Get-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionBackupVault_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionBackupVault_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. +.Description +Gets the operation result of operation triggered by Export Jobs API. +If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. +The blob contains exported jobs in JSON serialized format. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionexportjobsoperationresult +#> +function Get-AzDataProtectionExportJobsOperationResult { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # OperationID which represents the export job. + ${OperationId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionExportJobsOperationResult_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionExportJobsOperationResult_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a job with id in a backup vault +.Description +Gets a job with id in a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionjob +#> +function Get-AzDataProtectionJob { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('JobId')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The Job ID. + # This is a GUID-formatted string (e.g. + # 00000000-0000-0000-0000-000000000000). + ${Id}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='List')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Parameter(ParameterSetName='List', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionJob_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionJob_GetViaIdentity'; + List = 'Az.DataProtection.private\Get-AzDataProtectionJob_List'; + } + if (('Get', 'List') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation result for a resource +.Description +Gets the operation result for a resource +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationresult +#> +function Get-AzDataProtectionOperationResult { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Location}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionOperationResult_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionOperationResult_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets the operation status for a resource. +.Description +Gets the operation status for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperationstatus +#> +function Get-AzDataProtectionOperationStatus { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Location}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionOperationStatus_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionOperationStatus_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a list of Recovery Points for a DataSource in a vault. +.Description +Returns a list of Recovery Points for a DataSource in a vault. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypointlist +#> +function Get-AzDataProtectionRecoveryPointList { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPointList_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPointList_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Gets a Recovery Point using recoveryPointId for a Datasource. +.Description +Gets a Recovery Point using recoveryPointId for a Datasource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionrecoverypoint +#> +function Get-AzDataProtectionRecoveryPoint { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('RecoveryPointId')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Id}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPoint_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionRecoveryPoint_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns ResourceOperationGateKeepers collection belonging to a subscription. +.Description +Returns ResourceOperationGateKeepers collection belonging to a subscription. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeperresource +#> +function Get-AzDataProtectionResourceOperationGatekeeperResource { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get')] + [Parameter(ParameterSetName='Get1')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get1', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='GetViaIdentity1', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_Get'; + Get1 = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_Get1'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity'; + GetViaIdentity1 = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1'; + } + if (('Get', 'Get1') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns a ResourceOperationGateKeeper belonging to a resource group. +.Description +Returns a ResourceOperationGateKeeper belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationgatekeeper +#> +function Get-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the ResourceOperationGateKeeper + ${SName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeper_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationGatekeeper_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionresourceoperationresultpatch +#> +function Get-AzDataProtectionResourceOperationResultPatch { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='Get', PositionalBinding=$false)] +param( + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${OperationId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Get')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String[]] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Get', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Get = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationResultPatch_Get'; + GetViaIdentity = 'Az.DataProtection.private\Get-AzDataProtectionResourceOperationResultPatch_GetViaIdentity'; + } + if (('Get') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupinstance +#> +function Remove-AzDataProtectionBackupInstance { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupInstance_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupInstance_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a backup policy belonging to a backup vault +.Description +Deletes a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackuppolicy +#> +function Remove-AzDataProtectionBackupPolicy { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupPolicy_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupPolicy_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a BackupVault resource from the resource group. +.Description +Deletes a BackupVault resource from the resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupvault +#> +function Remove-AzDataProtectionBackupVault { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupVault_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupVault_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a ResourceOperationGateKeeper resource from the resource group. +.Description +Deletes a ResourceOperationGateKeeper resource from the resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionresourceoperationgatekeeper +#> +function Remove-AzDataProtectionResourceOperationGatekeeper { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionResourceOperationGatekeeper_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +DATASOURCEINFO : Datasource Details + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + +PARAMETER : BackupInstance Resource + [Property ]: BackupInstanceResource properties + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: + +PROPERTY : BackupInstanceResource properties + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupinstance +#> +function Set-AzDataProtectionBackupInstance { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource] + # BackupInstance Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance] + # BackupInstanceResource properties + # To construct, see NOTES section for PROPERTY properties and create a hash table. + ${Property}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Vault Id + ${VaultId}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource] + # Datasource Details + # To construct, see NOTES section for DATASOURCEINFO properties and create a hash table. + ${DatasourceInfo}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Policy Id + ${PolicyId}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupInstance_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupInstance_PutExpanded'; + dppplatform = 'Az.DataProtection.custom\Set-AzDataProtectionBackupInstance_dppplatform'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or Updates a backup policy belonging to a backup vault +.Description +Creates or Updates a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : BaseBackupPolicy resource + DatasourceType : Type of datasource for the backup management + ObjectType : +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackuppolicy +#> +function Set-AzDataProtectionBackupPolicy { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource] + # BaseBackupPolicy resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String[]] + # Type of datasource for the backup management + ${DatasourceType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${ObjectType}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupPolicy_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupPolicy_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or updates a BackupVault resource belonging to a resource group. +.Description +Creates or updates a BackupVault resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : Backup Vault Resource + [ETag ]: Optional ETag. + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Location ]: Resource location. + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. + [StorageSetting ]: Storage Settings + [DataStoreType ]: Gets or sets the type of the datastore. + [Type ]: Gets or sets the type. + +STORAGESETTING : Storage Settings + [DataStoreType ]: Gets or sets the type of the datastore. + [Type ]: Gets or sets the type. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupvault +#> +function Set-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource] + # Backup Vault Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Optional ETag. + ${ETag}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource location. + ${Location}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]] + # Storage Settings + # To construct, see NOTES section for STORAGESETTING properties and create a hash table. + ${StorageSetting}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupVault_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupVault_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. +.Description +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : ResourceOperationGateKeeper Resource + [ETag ]: Optional ETag. + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Location ]: Resource location. + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionresourceoperationgatekeeper +#> +function Set-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource] + # ResourceOperationGateKeeper Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Optional ETag. + ${ETag}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource location. + ${Location}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionResourceOperationGatekeeper_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionResourceOperationGatekeeper_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +rehydrate recovery point for restore for a BackupInstance +.Description +rehydrate recovery point for restore for a BackupInstance +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Azure Backup Rehydrate Request + RecoveryPointId : Id of the recovery point to be recovered + RehydrationRetentionDuration : Retention duration in ISO 8601 format i.e P10D . + [RehydrationPriority ]: Priority to be used for rehydration. Values High or Standard +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerehydrate +#> +function Start-AzDataProtectionBackupInstanceRehydrate { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='TriggerExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Parameter(ParameterSetName='TriggerExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Trigger', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest] + # Azure Backup Rehydrate Request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Id of the recovery point to be recovered + ${RecoveryPointId}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Retention duration in ISO 8601 format i.e P10D . + ${RehydrationRetentionDuration}, + + [Parameter(ParameterSetName='TriggerExpanded')] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded')] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority] + # Priority to be used for rehydration. + # Values High or Standard + ${RehydrationPriority}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_Trigger'; + TriggerExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerExpanded'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity'; + TriggerViaIdentityExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded'; + } + if (('Trigger', 'TriggerExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Triggers restore for a BackupInstance +.Description +Triggers restore for a BackupInstance +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Azure backup restore request + ObjectType : + RestoreTargetInfoObjectType : Type of Datasource object, used to initialize the right inherited type + SourceDataStoreType : Gets or sets the type of the source data store. + [RestoreTargetInfoRestoreLocation ]: Target Restore region +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerestore +#> +function Start-AzDataProtectionBackupInstanceRestore { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='TriggerExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Parameter(ParameterSetName='TriggerExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Trigger', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest] + # Azure backup restore request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${ObjectType}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Type of Datasource object, used to initialize the right inherited type + ${RestoreTargetInfoObjectType}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType] + # Gets or sets the type of the source data store. + ${SourceDataStoreType}, + + [Parameter(ParameterSetName='TriggerExpanded')] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Target Restore region + ${RestoreTargetInfoRestoreLocation}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_Trigger'; + TriggerExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerExpanded'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerViaIdentity'; + TriggerViaIdentityExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded'; + } + if (('Trigger', 'TriggerExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Triggers export of jobs and returns an OperationID to track. +.Description +Triggers export of jobs and returns an OperationID to track. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionexportjob +#> +function Start-AzDataProtectionExportJob { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Trigger', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionExportJob_Trigger'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionExportJob_TriggerViaIdentity'; + } + if (('Trigger') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Validates if Restore can be triggered for a DataSource +.Description +Validates if Restore can be triggered for a DataSource +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Validate restore request object + RestoreRequestObjectSourceDataStoreType : Gets or sets the type of the source data store. + RestoreRequestObjectType : + RestoreTargetInfoObjectType : Type of Datasource object, used to initialize the right inherited type + [RestoreTargetInfoRestoreLocation ]: Target Restore region +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstancerestore +#> +function Test-AzDataProtectionBackupInstanceRestore { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='ValidateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Validate')] + [Parameter(ParameterSetName='ValidateExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Validate', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject] + # Validate restore request object + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType] + # Gets or sets the type of the source data store. + ${RestoreRequestObjectSourceDataStoreType}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${RestoreRequestObjectType}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Type of Datasource object, used to initialize the right inherited type + ${RestoreTargetInfoObjectType}, + + [Parameter(ParameterSetName='ValidateExpanded')] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Target Restore region + ${RestoreTargetInfoRestoreLocation}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Validate = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_Validate'; + ValidateExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateExpanded'; + ValidateViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateViaIdentity'; + ValidateViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded'; + } + if (('Validate', 'ValidateExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Validate whether adhoc backup will be successful or not +.Description +Validate whether adhoc backup will be successful or not +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +BACKUPINSTANCE : Backup instance + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Validate for backup request + BackupInstance : Backup instance + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstance +#> +function Test-AzDataProtectionBackupInstance { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='ValidateViaIdentity', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Validate')] + [Parameter(ParameterSetName='ValidateExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Validate', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest] + # Validate for backup request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance] + # Backup instance + # To construct, see NOTES section for BACKUPINSTANCE properties and create a hash table. + ${BackupInstance}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Validate = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_Validate'; + ValidateExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateExpanded'; + ValidateViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateViaIdentity'; + ValidateViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateViaIdentityExpanded'; + } + if (('Validate', 'ValidateExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +API to check for resource name availability +.Description +API to check for resource name availability +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : CheckNameAvailability Request + [Name ]: Resource name for which availability needs to be checked + [Type ]: Describes the Resource type: Microsoft.DataProtection/BackupVaults +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupvaultnameavailability +#> +function Test-AzDataProtectionBackupVaultNameAvailability { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult])] +[CmdletBinding(DefaultParameterSetName='CheckExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Check', Mandatory)] + [Parameter(ParameterSetName='CheckExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The location in which uniqueness will be verified. + ${Location}, + + [Parameter(ParameterSetName='Check', Mandatory)] + [Parameter(ParameterSetName='CheckExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Check')] + [Parameter(ParameterSetName='CheckExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='CheckViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='CheckViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Check', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='CheckViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest] + # CheckNameAvailability Request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='CheckExpanded')] + [Parameter(ParameterSetName='CheckViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource name for which availability needs to be checked + ${Name}, + + [Parameter(ParameterSetName='CheckExpanded')] + [Parameter(ParameterSetName='CheckViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Describes the Resource type: Microsoft.DataProtection/BackupVaults + ${Type}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Check = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_Check'; + CheckExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckExpanded'; + CheckViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckViaIdentity'; + CheckViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded'; + } + if (('Check', 'CheckExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. +.Description +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionbackupvault +#> +function Update-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='PatchExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Patch')] + [Parameter(ParameterSetName='PatchExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Patch', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput] + # Patch Request content for Microsoft.DataProtection resources + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Patch = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_Patch'; + PatchExpanded = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchExpanded'; + PatchViaIdentity = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchViaIdentity'; + PatchViaIdentityExpanded = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchViaIdentityExpanded'; + } + if (('Patch', 'PatchExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. +.Description +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionresourceoperationgatekeeper +#> +function Update-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='PatchExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter(ParameterSetName='Patch')] + [Parameter(ParameterSetName='PatchExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Patch', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput] + # Patch Request content for Microsoft.DataProtection resources + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Patch = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_Patch'; + PatchExpanded = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchExpanded'; + PatchViaIdentity = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchViaIdentity'; + PatchViaIdentityExpanded = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded'; + } + if (('Patch', 'PatchExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Prepares Datasource object for backup +.Description +Prepares Datasource object for backup +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/prepare-azdataprotectiondatasourceinfo +#> +function Prepare-AzDataProtectionDatasourceInfo { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource])] +[CmdletBinding(DefaultParameterSetName='GetById', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Location of Datasource + ${Location}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Datasource Type + ${DatasourceType}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Name the datasource to be protected + ${Name}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Subscription ID of the datasource to be protected + ${SubscriptionId}, + + [Parameter(ParameterSetName='GetByName', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # ResourceGroup of the datasource to be protected + ${ResourceGroup}, + + [Parameter(ParameterSetName='GetByName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Server name of the datasource to be protected + ${ParentServerName}, + + [Parameter(ParameterSetName='GetById', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # ARM ID of the datasource to be protected + ${DatasourceId} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + GetByName = 'Az.DataProtection.custom\Prepare-AzDataProtectionDatasourceInfo'; + GetById = 'Az.DataProtection.custom\Prepare-AzDataProtectionDatasourceInfo'; + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Remove-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/exports/Remove-AzDataProtectionBackupInstance.ps1 new file mode 100644 index 000000000000..e8811be204e0 --- /dev/null +++ b/src/DataProtection/exports/Remove-AzDataProtectionBackupInstance.ps1 @@ -0,0 +1,195 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupinstance +#> +function Remove-AzDataProtectionBackupInstance { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupInstance_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupInstance_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Remove-AzDataProtectionBackupPolicy.ps1 b/src/DataProtection/exports/Remove-AzDataProtectionBackupPolicy.ps1 new file mode 100644 index 000000000000..8353542f6beb --- /dev/null +++ b/src/DataProtection/exports/Remove-AzDataProtectionBackupPolicy.ps1 @@ -0,0 +1,183 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a backup policy belonging to a backup vault +.Description +Deletes a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackuppolicy +#> +function Remove-AzDataProtectionBackupPolicy { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupPolicy_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupPolicy_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Remove-AzDataProtectionBackupVault.ps1 b/src/DataProtection/exports/Remove-AzDataProtectionBackupVault.ps1 new file mode 100644 index 000000000000..53ad7915d438 --- /dev/null +++ b/src/DataProtection/exports/Remove-AzDataProtectionBackupVault.ps1 @@ -0,0 +1,176 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a BackupVault resource from the resource group. +.Description +Deletes a BackupVault resource from the resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionbackupvault +#> +function Remove-AzDataProtectionBackupVault { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionBackupVault_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionBackupVault_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Remove-AzDataProtectionResourceOperationGatekeeper.ps1 b/src/DataProtection/exports/Remove-AzDataProtectionResourceOperationGatekeeper.ps1 new file mode 100644 index 000000000000..1c7bccc0a08c --- /dev/null +++ b/src/DataProtection/exports/Remove-AzDataProtectionResourceOperationGatekeeper.ps1 @@ -0,0 +1,177 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Deletes a ResourceOperationGateKeeper resource from the resource group. +.Description +Deletes a ResourceOperationGateKeeper resource from the resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/remove-azdataprotectionresourceoperationgatekeeper +#> +function Remove-AzDataProtectionResourceOperationGatekeeper { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Delete', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Delete', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Delete', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter(ParameterSetName='Delete')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='DeleteViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Delete = 'Az.DataProtection.private\Remove-AzDataProtectionResourceOperationGatekeeper_Delete'; + DeleteViaIdentity = 'Az.DataProtection.private\Remove-AzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity'; + } + if (('Delete') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Set-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/exports/Set-AzDataProtectionBackupInstance.ps1 new file mode 100644 index 000000000000..a96f1b8fa231 --- /dev/null +++ b/src/DataProtection/exports/Set-AzDataProtectionBackupInstance.ps1 @@ -0,0 +1,268 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis + +.Description + +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +DATASOURCEINFO : Datasource Details + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + +PARAMETER : BackupInstance Resource + [Property ]: BackupInstanceResource properties + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: + +PROPERTY : BackupInstanceResource properties + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupinstance +#> +function Set-AzDataProtectionBackupInstance { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Alias('BackupInstanceName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${Name}, + + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory)] + [Parameter(ParameterSetName='PutExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource] + # BackupInstance Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance] + # BackupInstanceResource properties + # To construct, see NOTES section for PROPERTY properties and create a hash table. + ${Property}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Vault Id + ${VaultId}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource] + # Datasource Details + # To construct, see NOTES section for DATASOURCEINFO properties and create a hash table. + ${DatasourceInfo}, + + [Parameter(ParameterSetName='dppplatform', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Policy Id + ${PolicyId}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(ParameterSetName='Put')] + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(ParameterSetName='Put', DontShow)] + [Parameter(ParameterSetName='PutExpanded', DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupInstance_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupInstance_PutExpanded'; + dppplatform = 'Az.DataProtection.custom\Set-AzDataProtectionBackupInstance_dppplatform'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Set-AzDataProtectionBackupPolicy.ps1 b/src/DataProtection/exports/Set-AzDataProtectionBackupPolicy.ps1 new file mode 100644 index 000000000000..38b27ee2852e --- /dev/null +++ b/src/DataProtection/exports/Set-AzDataProtectionBackupPolicy.ps1 @@ -0,0 +1,180 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or Updates a backup policy belonging to a backup vault +.Description +Creates or Updates a backup policy belonging to a backup vault +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : BaseBackupPolicy resource + DatasourceType : Type of datasource for the backup management + ObjectType : +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackuppolicy +#> +function Set-AzDataProtectionBackupPolicy { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Alias('BackupPolicyName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${Name}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource] + # BaseBackupPolicy resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String[]] + # Type of datasource for the backup management + ${DatasourceType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${ObjectType}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupPolicy_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupPolicy_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Set-AzDataProtectionBackupVault.ps1 b/src/DataProtection/exports/Set-AzDataProtectionBackupVault.ps1 new file mode 100644 index 000000000000..75e6dd02bfb3 --- /dev/null +++ b/src/DataProtection/exports/Set-AzDataProtectionBackupVault.ps1 @@ -0,0 +1,215 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or updates a BackupVault resource belonging to a resource group. +.Description +Creates or updates a BackupVault resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : Backup Vault Resource + [ETag ]: Optional ETag. + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Location ]: Resource location. + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. + [StorageSetting ]: Storage Settings + [DataStoreType ]: Gets or sets the type of the datastore. + [Type ]: Gets or sets the type. + +STORAGESETTING : Storage Settings + [DataStoreType ]: Gets or sets the type of the datastore. + [Type ]: Gets or sets the type. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionbackupvault +#> +function Set-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource] + # Backup Vault Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Optional ETag. + ${ETag}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource location. + ${Location}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]] + # Storage Settings + # To construct, see NOTES section for STORAGESETTING properties and create a hash table. + ${StorageSetting}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionBackupVault_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionBackupVault_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Set-AzDataProtectionResourceOperationGatekeeper.ps1 b/src/DataProtection/exports/Set-AzDataProtectionResourceOperationGatekeeper.ps1 new file mode 100644 index 000000000000..b9677962d67a --- /dev/null +++ b/src/DataProtection/exports/Set-AzDataProtectionResourceOperationGatekeeper.ps1 @@ -0,0 +1,190 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. +.Description +Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +PARAMETER : ResourceOperationGateKeeper Resource + [ETag ]: Optional ETag. + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Location ]: Resource location. + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/set-azdataprotectionresourceoperationgatekeeper +#> +function Set-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='PutExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Put', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource] + # ResourceOperationGateKeeper Resource + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Optional ETag. + ${ETag}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource location. + ${Location}, + + [Parameter(ParameterSetName='PutExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Put = 'Az.DataProtection.private\Set-AzDataProtectionResourceOperationGatekeeper_Put'; + PutExpanded = 'Az.DataProtection.private\Set-AzDataProtectionResourceOperationGatekeeper_PutExpanded'; + } + if (('Put', 'PutExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRehydrate.ps1 b/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRehydrate.ps1 new file mode 100644 index 000000000000..acc6e667c941 --- /dev/null +++ b/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRehydrate.ps1 @@ -0,0 +1,239 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +rehydrate recovery point for restore for a BackupInstance +.Description +rehydrate recovery point for restore for a BackupInstance +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Azure Backup Rehydrate Request + RecoveryPointId : Id of the recovery point to be recovered + RehydrationRetentionDuration : Retention duration in ISO 8601 format i.e P10D . + [RehydrationPriority ]: Priority to be used for rehydration. Values High or Standard +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerehydrate +#> +function Start-AzDataProtectionBackupInstanceRehydrate { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='TriggerExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # . + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Parameter(ParameterSetName='TriggerExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Trigger', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest] + # Azure Backup Rehydrate Request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Id of the recovery point to be recovered + ${RecoveryPointId}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Retention duration in ISO 8601 format i.e P10D . + ${RehydrationRetentionDuration}, + + [Parameter(ParameterSetName='TriggerExpanded')] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded')] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority] + # Priority to be used for rehydration. + # Values High or Standard + ${RehydrationPriority}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_Trigger'; + TriggerExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerExpanded'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity'; + TriggerViaIdentityExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded'; + } + if (('Trigger', 'TriggerExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRestore.ps1 b/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRestore.ps1 new file mode 100644 index 000000000000..2147ea807c2b --- /dev/null +++ b/src/DataProtection/exports/Start-AzDataProtectionBackupInstanceRestore.ps1 @@ -0,0 +1,246 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Triggers restore for a BackupInstance +.Description +Triggers restore for a BackupInstance +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Azure backup restore request + ObjectType : + RestoreTargetInfoObjectType : Type of Datasource object, used to initialize the right inherited type + SourceDataStoreType : Gets or sets the type of the source data store. + [RestoreTargetInfoRestoreLocation ]: Target Restore region +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionbackupinstancerestore +#> +function Start-AzDataProtectionBackupInstanceRestore { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='TriggerExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Parameter(ParameterSetName='TriggerExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Trigger', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest] + # Azure backup restore request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${ObjectType}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Type of Datasource object, used to initialize the right inherited type + ${RestoreTargetInfoObjectType}, + + [Parameter(ParameterSetName='TriggerExpanded', Mandatory)] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded', Mandatory)] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType] + # Gets or sets the type of the source data store. + ${SourceDataStoreType}, + + [Parameter(ParameterSetName='TriggerExpanded')] + [Parameter(ParameterSetName='TriggerViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Target Restore region + ${RestoreTargetInfoRestoreLocation}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_Trigger'; + TriggerExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerExpanded'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerViaIdentity'; + TriggerViaIdentityExpanded = 'Az.DataProtection.private\Start-AzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded'; + } + if (('Trigger', 'TriggerExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Start-AzDataProtectionExportJob.ps1 b/src/DataProtection/exports/Start-AzDataProtectionExportJob.ps1 new file mode 100644 index 000000000000..3beca9e32580 --- /dev/null +++ b/src/DataProtection/exports/Start-AzDataProtectionExportJob.ps1 @@ -0,0 +1,188 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Triggers export of jobs and returns an OperationID to track. +.Description +Triggers export of jobs and returns an OperationID to track. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/start-azdataprotectionexportjob +#> +function Start-AzDataProtectionExportJob { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='Trigger', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Trigger')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Trigger', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='TriggerViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Trigger = 'Az.DataProtection.private\Start-AzDataProtectionExportJob_Trigger'; + TriggerViaIdentity = 'Az.DataProtection.private\Start-AzDataProtectionExportJob_TriggerViaIdentity'; + } + if (('Trigger') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Test-AzDataProtectionBackupInstance.ps1 b/src/DataProtection/exports/Test-AzDataProtectionBackupInstance.ps1 new file mode 100644 index 000000000000..a1fda2bafdcf --- /dev/null +++ b/src/DataProtection/exports/Test-AzDataProtectionBackupInstance.ps1 @@ -0,0 +1,255 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Validate whether adhoc backup will be successful or not +.Description +Validate whether adhoc backup will be successful or not +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +BACKUPINSTANCE : Backup instance + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Validate for backup request + BackupInstance : Backup instance + DataSourceInfo : Gets or sets the data source information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [Type ]: DatasourceType of the resource. + PolicyInfo : Gets or sets the policy information. + PolicyId : + [DataSourceSetInfo ]: Gets or sets the data source set information. + ResourceId : Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault. + [DatasourceType ]: DatasourceType of the resource. + [ObjectType ]: Type of Datasource object, used to initialize the right inherited type + [ResourceLocation ]: Location of datasource. + [ResourceName ]: Unique identifier of the resource in the context of parent. + [ResourceType ]: Resource Type of Datasource. + [ResourceUri ]: Uri of the resource. + [ObjectType ]: +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstance +#> +function Test-AzDataProtectionBackupInstance { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='ValidateViaIdentity', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Validate')] + [Parameter(ParameterSetName='ValidateExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Validate', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest] + # Validate for backup request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance] + # Backup instance + # To construct, see NOTES section for BACKUPINSTANCE properties and create a hash table. + ${BackupInstance}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Validate = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_Validate'; + ValidateExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateExpanded'; + ValidateViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateViaIdentity'; + ValidateViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstance_ValidateViaIdentityExpanded'; + } + if (('Validate', 'ValidateExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Test-AzDataProtectionBackupInstanceRestore.ps1 b/src/DataProtection/exports/Test-AzDataProtectionBackupInstanceRestore.ps1 new file mode 100644 index 000000000000..2e224f6dffa2 --- /dev/null +++ b/src/DataProtection/exports/Test-AzDataProtectionBackupInstanceRestore.ps1 @@ -0,0 +1,246 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Validates if Restore can be triggered for a DataSource +.Description +Validates if Restore can be triggered for a DataSource +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +System.Boolean +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Validate restore request object + RestoreRequestObjectSourceDataStoreType : Gets or sets the type of the source data store. + RestoreRequestObjectType : + RestoreTargetInfoObjectType : Type of Datasource object, used to initialize the right inherited type + [RestoreTargetInfoRestoreLocation ]: Target Restore region +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupinstancerestore +#> +function Test-AzDataProtectionBackupInstanceRestore { +[OutputType([System.Boolean])] +[CmdletBinding(DefaultParameterSetName='ValidateExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup instance + ${BackupInstanceName}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Validate')] + [Parameter(ParameterSetName='ValidateExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Validate', Mandatory)] + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Validate', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='ValidateViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject] + # Validate restore request object + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [ArgumentCompleter([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType])] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType] + # Gets or sets the type of the source data store. + ${RestoreRequestObjectSourceDataStoreType}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # . + ${RestoreRequestObjectType}, + + [Parameter(ParameterSetName='ValidateExpanded', Mandatory)] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Type of Datasource object, used to initialize the right inherited type + ${RestoreTargetInfoObjectType}, + + [Parameter(ParameterSetName='ValidateExpanded')] + [Parameter(ParameterSetName='ValidateViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Target Restore region + ${RestoreTargetInfoRestoreLocation}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Returns true when the command succeeds + ${PassThru}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Validate = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_Validate'; + ValidateExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateExpanded'; + ValidateViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateViaIdentity'; + ValidateViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded'; + } + if (('Validate', 'ValidateExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Test-AzDataProtectionBackupVaultNameAvailability.ps1 b/src/DataProtection/exports/Test-AzDataProtectionBackupVaultNameAvailability.ps1 new file mode 100644 index 000000000000..a61c5a2ece24 --- /dev/null +++ b/src/DataProtection/exports/Test-AzDataProtectionBackupVaultNameAvailability.ps1 @@ -0,0 +1,204 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +API to check for resource name availability +.Description +API to check for resource name availability +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : CheckNameAvailability Request + [Name ]: Resource name for which availability needs to be checked + [Type ]: Describes the Resource type: Microsoft.DataProtection/BackupVaults +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/test-azdataprotectionbackupvaultnameavailability +#> +function Test-AzDataProtectionBackupVaultNameAvailability { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult])] +[CmdletBinding(DefaultParameterSetName='CheckExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Check', Mandatory)] + [Parameter(ParameterSetName='CheckExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The location in which uniqueness will be verified. + ${Location}, + + [Parameter(ParameterSetName='Check', Mandatory)] + [Parameter(ParameterSetName='CheckExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Check')] + [Parameter(ParameterSetName='CheckExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='CheckViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='CheckViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Check', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='CheckViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest] + # CheckNameAvailability Request + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='CheckExpanded')] + [Parameter(ParameterSetName='CheckViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Resource name for which availability needs to be checked + ${Name}, + + [Parameter(ParameterSetName='CheckExpanded')] + [Parameter(ParameterSetName='CheckViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # Describes the Resource type: Microsoft.DataProtection/BackupVaults + ${Type}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Check = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_Check'; + CheckExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckExpanded'; + CheckViaIdentity = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckViaIdentity'; + CheckViaIdentityExpanded = 'Az.DataProtection.private\Test-AzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded'; + } + if (('Check', 'CheckExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Update-AzDataProtectionBackupVault.ps1 b/src/DataProtection/exports/Update-AzDataProtectionBackupVault.ps1 new file mode 100644 index 000000000000..8e93b522df33 --- /dev/null +++ b/src/DataProtection/exports/Update-AzDataProtectionBackupVault.ps1 @@ -0,0 +1,220 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. +.Description +Updates a BackupVault resource belonging to a resource group. +For example, updating tags for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionbackupvault +#> +function Update-AzDataProtectionBackupVault { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource])] +[CmdletBinding(DefaultParameterSetName='PatchExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Patch')] + [Parameter(ParameterSetName='PatchExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the backup vault. + ${VaultName}, + + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Patch', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput] + # Patch Request content for Microsoft.DataProtection resources + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command as a job + ${AsJob}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Run the command asynchronously + ${NoWait}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Patch = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_Patch'; + PatchExpanded = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchExpanded'; + PatchViaIdentity = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchViaIdentity'; + PatchViaIdentityExpanded = 'Az.DataProtection.private\Update-AzDataProtectionBackupVault_PatchViaIdentityExpanded'; + } + if (('Patch', 'PatchExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/Update-AzDataProtectionResourceOperationGatekeeper.ps1 b/src/DataProtection/exports/Update-AzDataProtectionResourceOperationGatekeeper.ps1 new file mode 100644 index 000000000000..a121b743353d --- /dev/null +++ b/src/DataProtection/exports/Update-AzDataProtectionResourceOperationGatekeeper.ps1 @@ -0,0 +1,209 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. +.Description +Updates a ResourceOperationGatekeeper resource belonging to a resource group. +For example, updating tags for a resource. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput +.Inputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource +.Notes +COMPLEX PARAMETER PROPERTIES + +To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables. + +INPUTOBJECT : Identity Parameter + [BackupInstanceName ]: The name of the backup instance + [BackupPolicyName ]: + [Id ]: Resource identity path + [JobId ]: The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + [Location ]: The location in which uniqueness will be verified. + [OperationId ]: + [RecoveryPointId ]: + [ResourceGroupName ]: The name of the resource group where the backup vault is present. + [ResourceOperationGateKeepersName ]: The name of the ResourceOperationGateKeeper + [SubscriptionId ]: The subscription Id. + [VaultName ]: The name of the backup vault. + +PARAMETER : Patch Request content for Microsoft.DataProtection resources + [IdentityType ]: The identityType which can be either SystemAssigned or None + [Tag ]: Resource tags. + [(Any) ]: This indicates any property can be added to this object. +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/update-azdataprotectionresourceoperationgatekeeper +#> +function Update-AzDataProtectionResourceOperationGatekeeper { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource])] +[CmdletBinding(DefaultParameterSetName='PatchExpanded', PositionalBinding=$false, SupportsShouldProcess, ConfirmImpact='Medium')] +param( + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of the resource group where the backup vault is present. + ${ResourceGroupName}, + + [Parameter(ParameterSetName='Patch', Mandatory)] + [Parameter(ParameterSetName='PatchExpanded', Mandatory)] + [Alias('ResourceOperationGateKeepersName')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [System.String] + # The name of ResourceOperationGatekeeper + ${SName}, + + [Parameter(ParameterSetName='Patch')] + [Parameter(ParameterSetName='PatchExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo(Script='(Get-AzContext).Subscription.Id')] + [System.String] + # The subscription Id. + ${SubscriptionId}, + + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentityExpanded', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Path')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity] + # Identity Parameter + # To construct, see NOTES section for INPUTOBJECT properties and create a hash table. + ${InputObject}, + + [Parameter(ParameterSetName='Patch', Mandatory, ValueFromPipeline)] + [Parameter(ParameterSetName='PatchViaIdentity', Mandatory, ValueFromPipeline)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput] + # Patch Request content for Microsoft.DataProtection resources + # To construct, see NOTES section for PARAMETER properties and create a hash table. + ${Parameter}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [System.String] + # The identityType which can be either SystemAssigned or None + ${IdentityType}, + + [Parameter(ParameterSetName='PatchExpanded')] + [Parameter(ParameterSetName='PatchViaIdentityExpanded')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Body')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info(PossibleTypes=([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags]))] + [System.Collections.Hashtable] + # Resource tags. + ${Tag}, + + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + Patch = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_Patch'; + PatchExpanded = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchExpanded'; + PatchViaIdentity = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchViaIdentity'; + PatchViaIdentityExpanded = 'Az.DataProtection.private\Update-AzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded'; + } + if (('Patch', 'PatchExpanded') -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('SubscriptionId')) { + $PSBoundParameters['SubscriptionId'] = (Get-AzContext).Subscription.Id + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/exports/readme.md b/src/DataProtection/exports/readme.md new file mode 100644 index 000000000000..35f008374574 --- /dev/null +++ b/src/DataProtection/exports/readme.md @@ -0,0 +1,20 @@ +# Exports +This directory contains the cmdlets *exported by* `Az.DataProtection`. No other cmdlets in this repository are directly exported. What that means is the `Az.DataProtection` module will run [Export-ModuleMember](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/export-modulemember) on the cmldets in this directory. The cmdlets in this directory are generated at **build-time**. Do not put any custom code, files, cmdlets, etc. into this directory. Please use `..\custom` for all custom implementation. + +## Info +- Modifiable: no +- Generated: all +- Committed: no +- Packaged: yes + +## Details +The cmdlets generated here are created every time you run `build-module.ps1`. These cmdlets are a merge of all (excluding `InternalExport`) cmdlets from the private binary (`..\bin\Az.DataProtection.private.dll`) and from the `..\custom\Az.DataProtection.custom.psm1` module. Cmdlets that are *not merged* from those directories are decorated with the `InternalExport` attribute. This happens when you set the cmdlet to **hide** from configuration. For more information on hiding, see [cmdlet hiding](https://github.com/Azure/autorest/blob/master/docs/powershell/options.md#cmdlet-hiding-exportation-suppression) or the [readme.md](..\internal/readme.md) in the `..\internal` folder. + +## Purpose +We generate script cmdlets out of the binary cmdlets and custom cmdlets. The format of script cmdlets are simplistic; thus, easier to generate at build time. Generating the cmdlets is required as to allow merging of generated binary, hand-written binary, and hand-written custom cmdlets. For Azure cmdlets, having script cmdlets simplifies the mechanism for exporting Azure profiles. + +## Structure +The cmdlets generated here will flat in the directory (no sub-folders) as long as there are no Azure profiles specified for any cmdlets. Azure profiles (the `Profiles` attribute) is only applied when generating with the `--azure` attribute (or `azure: true` in the configuration). When Azure profiles are applied, the folder structure has a folder per profile. Each profile folder has only those cmdlets that apply to that profile. + +## Usage +When `./Az.DataProtection.psm1` is loaded, it dynamically exports cmdlets here based on the folder structure and on the selected profile. If there are no sub-folders, it exports all cmdlets at the root of this folder. If there are sub-folders, it checks to see the selected profile. If no profile is selected, it exports the cmdlets in the last sub-folder (alphabetically). If a profile is selected, it exports the cmdlets in the sub-folder that matches the profile name. If there is no sub-folder that matches the profile name, it exports no cmdlets and writes a warning message. \ No newline at end of file diff --git a/src/DataProtection/generate-help.ps1 b/src/DataProtection/generate-help.ps1 new file mode 100644 index 000000000000..87d11a711945 --- /dev/null +++ b/src/DataProtection/generate-help.ps1 @@ -0,0 +1,73 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +param([switch]$Isolated) +$ErrorActionPreference = 'Stop' + +$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().Path +if(-not $Isolated) { + Write-Host -ForegroundColor Green 'Creating isolated process...' + & "$pwsh" -NonInteractive -NoLogo -NoProfile -File $MyInvocation.MyCommand.Path @PSBoundParameters -Isolated + return +} + +$exportsFolder = Join-Path $PSScriptRoot 'exports' +if(-not (Test-Path $exportsFolder)) { + Write-Error "Exports folder '$exportsFolder' was not found." +} + +$directories = Get-ChildItem -Directory -Path $exportsFolder +$hasProfiles = ($directories | Measure-Object).Count -gt 0 +if(-not $hasProfiles) { + $directories = Get-Item -Path $exportsFolder +} + +$docsFolder = Join-Path $PSScriptRoot 'docs' +if(Test-Path $docsFolder) { + $null = Get-ChildItem -Path $docsFolder -Recurse -Exclude 'readme.md' | Remove-Item -Recurse -ErrorAction SilentlyContinue +} +$null = New-Item -ItemType Directory -Force -Path $docsFolder -ErrorAction SilentlyContinue +$examplesFolder = Join-Path $PSScriptRoot 'examples' + +$modulePsd1 = Get-Item -Path (Join-Path $PSScriptRoot './Az.DataProtection.psd1') +$modulePath = $modulePsd1.FullName +$moduleName = $modulePsd1.BaseName + +# Load DLL to use build-time cmdlets +Import-Module -Name $modulePath +Import-Module -Name (Join-Path $PSScriptRoot './bin/Az.DataProtection.private.dll') +$instance = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module]::Instance +# Module info is shared per profile +$moduleInfo = Get-Module -Name $moduleName + +foreach($directory in $directories) +{ + if($hasProfiles) { + Select-AzProfile -Name $directory.Name + } + # Reload module per profile + Import-Module -Name $modulePath -Force + + $cmdletNames = Get-ScriptCmdlet -ScriptFolder $directory.FullName + $cmdletHelpInfo = $cmdletNames | ForEach-Object { Get-Help -Name $_ -Full } + $cmdletFunctionInfo = Get-ScriptCmdlet -ScriptFolder $directory.FullName -AsFunctionInfo + + $docsPath = Join-Path $docsFolder $directory.Name + $null = New-Item -ItemType Directory -Force -Path $docsPath -ErrorAction SilentlyContinue + $examplesPath = Join-Path $examplesFolder $directory.Name + + Export-HelpMarkdown -ModuleInfo $moduleInfo -FunctionInfo $cmdletFunctionInfo -HelpInfo $cmdletHelpInfo -DocsFolder $docsPath -ExamplesFolder $examplesPath + Write-Host -ForegroundColor Green "Created documentation in '$docsPath'" +} + +Write-Host -ForegroundColor Green '-------------Done-------------' \ No newline at end of file diff --git a/src/DataProtection/generated/Module.cs b/src/DataProtection/generated/Module.cs new file mode 100644 index 000000000000..c18dffdcdf0d --- /dev/null +++ b/src/DataProtection/generated/Module.cs @@ -0,0 +1,158 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + using SendAsyncStepDelegate = global::System.Func, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>; + using PipelineChangeDelegate = global::System.Action, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>>; + using GetParameterDelegate = global::System.Func; + using ModuleLoadPipelineDelegate = global::System.Action, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>>, global::System.Action, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>>>; + using NewRequestPipelineDelegate = global::System.Action, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>>, global::System.Action, global::System.Threading.Tasks.Task>, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>>>; + using ArgumentCompleterDelegate = global::System.Func; + using SignalDelegate = global::System.Func, global::System.Threading.Tasks.Task>; + using EventListenerDelegate = global::System.Func, global::System.Func, global::System.Threading.Tasks.Task>, global::System.Management.Automation.InvocationInfo, string, string, string, global::System.Exception, global::System.Threading.Tasks.Task>; + using NextDelegate = global::System.Func, global::System.Threading.Tasks.Task>, global::System.Threading.Tasks.Task>; + + /// A class that contains the module-common code and data. + public partial class Module + { + /// The currently selected profile. + public string Profile = global::System.String.Empty; + + public global::System.Net.Http.HttpClientHandler _handler = new global::System.Net.Http.HttpClientHandler(); + + /// the ISendAsync pipeline instance + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline _pipeline; + + /// the ISendAsync pipeline instance (when proxy is enabled) + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline _pipelineWithProxy; + + public global::System.Net.WebProxy _webProxy = new global::System.Net.WebProxy(); + + /// Gets completion data for azure specific fields + public ArgumentCompleterDelegate ArgumentCompleter { get; set; } + + /// The instance of the Client API + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient ClientAPI { get; set; } + + /// A delegate that gets called for each signalled event + public EventListenerDelegate EventListener { get; set; } + + /// The delegate to call to get parameter data from a common module. + public GetParameterDelegate GetParameterValue { get; set; } + + /// Backing field for property. + private static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module _instance; + + /// the singleton of this module class + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module Instance => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module._instance?? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module._instance = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module()); + + /// The Name of this module + public string Name => @"Az.DataProtection"; + + /// The delegate to call when this module is loaded (supporting a commmon module). + public ModuleLoadPipelineDelegate OnModuleLoad { get; set; } + + /// The delegate to call before each new request (supporting a commmon module). + public NewRequestPipelineDelegate OnNewRequest { get; set; } + + /// The name of the currently selected Azure profile + public global::System.String ProfileName { get; set; } + + /// The ResourceID for this module (azure arm). + public string ResourceId => @"Az.DataProtection"; + + /// The from the cmdlet + /// The HttpPipeline for the request + + partial void AfterCreatePipeline(global::System.Management.Automation.InvocationInfo invocationInfo, ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline pipeline); + + /// The from the cmdlet + /// The HttpPipeline for the request + + partial void BeforeCreatePipeline(global::System.Management.Automation.InvocationInfo invocationInfo, ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline pipeline); + + partial void CustomInit(); + + /// Creates an instance of the HttpPipeline for each call. + /// The from the cmdlet + /// the cmdlet's correlation id. + /// the cmdlet's process record correlation id. + /// the cmdlet's parameterset name. + /// An instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline for the remote call. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline CreatePipeline(global::System.Management.Automation.InvocationInfo invocationInfo, string correlationId, string processRecordId, string parameterSetName = null) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline pipeline = null; + BeforeCreatePipeline(invocationInfo, ref pipeline); + pipeline = (pipeline ?? (_handler.UseProxy ? _pipelineWithProxy : _pipeline)).Clone(); + AfterCreatePipeline(invocationInfo, ref pipeline); + pipeline.Append(new Runtime.CmdInfoHandler(processRecordId, invocationInfo, parameterSetName).SendAsync); + OnNewRequest?.Invoke( invocationInfo, correlationId,processRecordId, (step)=> { pipeline.Prepend(step); } , (step)=> { pipeline.Append(step); } ); + return pipeline; + } + + /// Gets parameters from a common module. + /// The from the cmdlet + /// the cmdlet's correlation id. + /// The name of the parameter to get the value for. + /// + /// The parameter value from the common module. (Note: this should be type converted on the way back) + /// + public object GetParameter(global::System.Management.Automation.InvocationInfo invocationInfo, string correlationId, string parameterName) => GetParameterValue?.Invoke( ResourceId, Name, invocationInfo, correlationId,parameterName ); + + /// Initialization steps performed after the module is loaded. + public void Init() + { + OnModuleLoad?.Invoke( ResourceId, Name ,(step)=> { _pipeline.Prepend(step); } , (step)=> { _pipeline.Append(step); } ); + OnModuleLoad?.Invoke( ResourceId, Name ,(step)=> { _pipelineWithProxy.Prepend(step); } , (step)=> { _pipelineWithProxy.Append(step); } ); + CustomInit(); + } + + /// Creates the module instance. + private Module() + { + /// constructor + ClientAPI = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient(); + _handler.Proxy = _webProxy; + _pipeline = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpClientFactory(new global::System.Net.Http.HttpClient())); + _pipelineWithProxy = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpClientFactory(new global::System.Net.Http.HttpClient(_handler))); + } + + /// The HTTP Proxy to use. + /// The HTTP Proxy Credentials + /// True if the proxy should use default credentials + public void SetProxyConfiguration(global::System.Uri proxy, global::System.Management.Automation.PSCredential proxyCredential, bool proxyUseDefaultCredentials) + { + // set the proxy configuration + _webProxy.Address = proxy; + _webProxy.BypassProxyOnLocal = false; + _webProxy.Credentials = proxyCredential ?.GetNetworkCredential(); + _webProxy.UseDefaultCredentials = proxyUseDefaultCredentials; + _handler.UseProxy = proxy != null; + } + + /// Called to dispatch events to the common module listener + /// The ID of the event + /// The cancellation token for the event + /// A delegate to get the detailed event data + /// The callback for the event dispatcher + /// The from the cmdlet + /// the cmdlet's parameterset name. + /// the cmdlet's correlation id. + /// the cmdlet's process record correlation id. + /// the exception that is being thrown (if available) + /// + /// A that will be complete when handling of the event is completed. + /// + public async global::System.Threading.Tasks.Task Signal(string id, global::System.Threading.CancellationToken token, global::System.Func getEventData, SignalDelegate signal, global::System.Management.Automation.InvocationInfo invocationInfo, string parameterSetName, string correlationId, string processRecordId, global::System.Exception exception) + { + using( NoSynchronizationContext ) + { + await EventListener?.Invoke(id,token,getEventData, signal, invocationInfo, parameterSetName, correlationId,processRecordId,exception); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/DataProtectionClient.cs b/src/DataProtection/generated/api/DataProtectionClient.cs new file mode 100644 index 000000000000..f78030eae64e --- /dev/null +++ b/src/DataProtection/generated/api/DataProtectionClient.cs @@ -0,0 +1,7123 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Low-level API implementation for the DataProtectionClient service. + /// + public partial class DataProtectionClient + { + + /// Trigger adhoc backup + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesAdhocBackup(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/backup" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesAdhocBackup_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Trigger adhoc backup + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesAdhocBackupViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/backup$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/backup" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesAdhocBackup_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesAdhocBackup_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get + /// validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesAdhocBackup_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesDelete(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesDelete_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesDeleteViaIdentity(global::System.String viaIdentity, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesDelete_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesDelete_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesDelete_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + } + } + + /// Gets a backup instance with name in a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesGet(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets a backup instances belonging to a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesGetBackupInstancesInVault(string vaultName, string resourceGroupName, string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesGetBackupInstancesInVault_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets a backup instances belonging to a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesGetBackupInstancesInVaultViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesGetBackupInstancesInVault_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Actual wire call for method. + /// + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesGetBackupInstancesInVault_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, + /// but you will get validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesGetBackupInstancesInVault_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Gets a backup instance with name in a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesGet_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + } + } + + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesPut(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesPutViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesPut_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_originalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_originalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesPut_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// rehydrate recovery point for restore for a BackupInstance + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup vault. + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesTriggerRehydrate(string resourceGroupName, string subscriptionId, string vaultName, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/rehydrate" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesTriggerRehydrate_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// rehydrate recovery point for restore for a BackupInstance + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesTriggerRehydrateViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/rehydrate$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var vaultName = _match.Groups["vaultName"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/rehydrate" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesTriggerRehydrate_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesTriggerRehydrate_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup vault. + /// + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesTriggerRehydrate_Validate(string resourceGroupName, string subscriptionId, string vaultName, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Triggers restore for a BackupInstance + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesTriggerRestore(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/restore" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesTriggerRestore_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Triggers restore for a BackupInstance + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesTriggerRestoreViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/restore$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/restore" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesTriggerRestore_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesTriggerRestore_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesTriggerRestore_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Validate whether adhoc backup will be successful or not + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesValidateForBackup(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/validateForBackup" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesValidateForBackup_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Validate whether adhoc backup will be successful or not + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesValidateForBackupViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/validateForBackup$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/validateForBackup" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesValidateForBackup_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesValidateForBackup_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you + /// will get validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesValidateForBackup_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Validates if Restore can be triggered for a DataSource + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesValidateRestore(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/validateRestore" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesValidateRestore_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Validates if Restore can be triggered for a DataSource + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupInstancesValidateRestoreViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject body, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/validateRestore$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/validateRestore" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupInstancesValidateRestore_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesValidateRestore_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_finalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupInstancesValidateRestore_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Deletes a backup policy belonging to a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesDelete(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupPolicies/" + + global::System.Uri.EscapeDataString(backupPolicyName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Deletes a backup policy belonging to a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesDeleteViaIdentity(global::System.String viaIdentity, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupPolicies/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupPolicyName = _match.Groups["backupPolicyName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupPolicies/" + + backupPolicyName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesDelete_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response); + break; + } + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesDelete_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupPolicyName),backupPolicyName); + } + } + + /// Gets a backup policy belonging to a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesGet(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupPolicies/" + + global::System.Uri.EscapeDataString(backupPolicyName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets a backup policy belonging to a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupPolicies/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupPolicyName = _match.Groups["backupPolicyName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupPolicies/" + + backupPolicyName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesGet_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupPolicyName),backupPolicyName); + } + } + + /// Returns list of backup policies belonging to a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesList(string vaultName, string resourceGroupName, string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupPolicies" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns list of backup policies belonging to a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesListViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupPolicies$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupPolicies" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesList_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesList_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Creates or Updates a backup policy belonging to a backup vault + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesPut(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupPolicies/" + + global::System.Uri.EscapeDataString(backupPolicyName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Creates or Updates a backup policy belonging to a backup vault + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupPoliciesPutViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupPolicies/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupPolicyName = _match.Groups["backupPolicyName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupPolicies/" + + backupPolicyName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupPoliciesPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesPut_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupPoliciesPut_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupPolicyName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupPolicyName),backupPolicyName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// API to check for resource name availability + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The location in which uniqueness will be verified. + /// Check name availability request + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsCheckNameAvailability(string resourceGroupName, string subscriptionId, string location, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/locations/" + + global::System.Uri.EscapeDataString(location) + + "/checkNameAvailability" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsCheckNameAvailability_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// API to check for resource name availability + /// + /// Check name availability request + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsCheckNameAvailabilityViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/locations/(?[^/]+)/checkNameAvailability$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/checkNameAvailability'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var location = _match.Groups["location"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/locations/" + + location + + "/checkNameAvailability" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsCheckNameAvailability_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsCheckNameAvailability_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityResult.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you + /// will get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The location in which uniqueness will be verified. + /// Check name availability request + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsCheckNameAvailability_Validate(string resourceGroupName, string subscriptionId, string location, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(location),location); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Deletes a BackupVault resource from the resource group. + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsDelete(string vaultName, string resourceGroupName, string subscriptionId, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Deletes a BackupVault resource from the resource group. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsDeleteViaIdentity(global::System.String viaIdentity, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsDelete_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response); + break; + } + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsDelete_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Returns a resource belonging to a resource group. + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGet(string vaultName, string resourceGroupName, string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns resource collection belonging to a resource group. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInResourceGroup(string resourceGroupName, string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGetResourcesInResourceGroup_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns resource collection belonging to a resource group. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInResourceGroupViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGetResourcesInResourceGroup_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Actual wire call for method. + /// + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInResourceGroup_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but + /// you will get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInResourceGroup_Validate(string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Returns resource collection belonging to a subscription. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInSubscription(string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/providers/Microsoft.DataProtection/backupVaults" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGetResourcesInSubscription_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns resource collection belonging to a subscription. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInSubscriptionViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/backupVaults'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/providers/Microsoft.DataProtection/backupVaults" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGetResourcesInSubscription_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Actual wire call for method. + /// + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInSubscription_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but + /// you will get validation events back. + /// + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGetResourcesInSubscription_Validate(string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Returns a resource belonging to a resource group. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsGet_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsPatch(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Patch, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsPatch_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsPatchViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Patch, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsPatch_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsPatch_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_originalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_originalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsPatch_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// Creates or updates a BackupVault resource belonging to a resource group. + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsPut(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Creates or updates a BackupVault resource belonging to a resource group. + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task BackupVaultsPutViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.BackupVaultsPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsPut_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: default + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + if (!string.IsNullOrWhiteSpace(_originalUri)) + { + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_originalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task BackupVaultsPut_Validate(string vaultName, string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// + /// Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains + /// URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format. + /// + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// OperationID which represents the export job. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ExportJobsOperationResultGet(string subscriptionId, string resourceGroupName, string vaultName, string operationId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupJobs/operations/" + + global::System.Uri.EscapeDataString(operationId) + + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ExportJobsOperationResultGet_Call(request,onOk,onAccepted,onDefault,eventListener,sender); + } + } + + /// + /// Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains + /// URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format. + /// + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ExportJobsOperationResultGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupJobs/operations/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/operations/{operationId}'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var vaultName = _match.Groups["vaultName"].Value; + var operationId = _match.Groups["operationId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupJobs/operations/" + + operationId + + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ExportJobsOperationResultGet_Call(request,onOk,onAccepted,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ExportJobsOperationResultGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ExportJobsResult.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + case global::System.Net.HttpStatusCode.Accepted: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onAccepted(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// OperationID which represents the export job. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ExportJobsOperationResultGet_Validate(string subscriptionId, string resourceGroupName, string vaultName, string operationId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(operationId),operationId); + } + } + + /// Triggers export of jobs and returns an OperationID to track. + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ExportJobsTrigger(string subscriptionId, string resourceGroupName, string vaultName, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupJobsExport" + + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ExportJobsTrigger_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Triggers export of jobs and returns an OperationID to track. + /// + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ExportJobsTriggerViaIdentity(global::System.String viaIdentity, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupJobsExport$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobsExport'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var vaultName = _match.Groups["vaultName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupJobsExport" + + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Post, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ExportJobsTrigger_Call(request,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ExportJobsTrigger_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + // this operation supports x-ms-long-running-operation + var _originalUri = request.RequestUri.AbsoluteUri; + // declared final-state-via: location + var _finalUri = _response.GetFirstHeader(@"Location"); + var asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = _response.GetFirstHeader(@"Location"); + while (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + + // get the delay before polling. (default to 30 seconds if not present) + int delay = (int)(_response.Headers.RetryAfter?.Delta?.TotalSeconds ?? 30); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling, $"Delaying {delay} seconds before polling.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // start the delay timer (we'll await later...) + var waiting = global::System.Threading.Tasks.Task.Delay(delay * 1000, eventListener.Token ); + + // while we wait, let's grab the headers and get ready to poll. + if (!System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Azure-AsyncOperation"))) { + asyncOperation = _response.GetFirstHeader(@"Azure-AsyncOperation"); + } + if (!global::System.String.IsNullOrEmpty(_response.GetFirstHeader(@"Location"))) { + location = _response.GetFirstHeader(@"Location"); + } + var _uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? _originalUri : location : asyncOperation; + request = request.CloneAndDispose(new global::System.Uri(_uri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // and let's look at the current response body and see if we have some information we can give back to the listener + var content = await _response.Content.ReadAsStringAsync(); + await waiting; + + // check for cancellation + if( eventListener.Token.IsCancellationRequested ) { return; } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polling {_uri}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + // drop the old response + _response?.Dispose(); + + // make the polling call + _response = await sender.SendAsync(request, eventListener); + + // if we got back an OK, take a peek inside and see if it's done + if( _response.StatusCode == global::System.Net.HttpStatusCode.OK) + { + try { + if( Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(await _response.Content.ReadAsStringAsync()) is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + var state = json.Property("properties")?.PropertyT("provisioningState") ?? json.PropertyT("status"); + if( state is null ) + { + // the body doesn't contain any information that has the state of the LRO + // we're going to just get out, and let the consumer have the result + break; + } + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Polling, $"Polled {_uri} provisioning state {state}.", _response); if( eventListener.Token.IsCancellationRequested ) { return; } + + switch( state?.ToString()?.ToLower() ) + { + case "succeeded": + case "failed": + case "canceled": + // we're done polling. + break; + + default: + // need to keep polling! + _response.StatusCode = global::System.Net.HttpStatusCode.Created; + continue; + } + } + } catch { + // if we run into a problem peeking into the result, + // we really don't want to do anything special. + } + } + + // check for terminal status code + if (_response.StatusCode == global::System.Net.HttpStatusCode.Created || _response.StatusCode == global::System.Net.HttpStatusCode.Accepted ) + { + continue; + } + // we are done polling, do a request on final target? + // create a new request with the final uri + request = request.CloneAndDispose(new global::System.Uri(_finalUri), Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get); + + // drop the old response + _response?.Dispose(); + + // make the final call + _response = await sender.SendAsync(request, eventListener); + break; + } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ExportJobsTrigger_Validate(string subscriptionId, string resourceGroupName, string vaultName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + } + } + + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task GetOperationResultPatch(string vaultName, string resourceGroupName, string subscriptionId, string operationId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/operationResults/" + + global::System.Uri.EscapeDataString(operationId) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.GetOperationResultPatch_Call(request,onOk,onAccepted,onDefault,eventListener,sender); + } + } + + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task GetOperationResultPatchViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/operationResults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/operationResults/{operationId}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var operationId = _match.Groups["operationId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/operationResults/" + + operationId + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.GetOperationResultPatch_Call(request,onOk,onAccepted,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task GetOperationResultPatch_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func onAccepted, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + case global::System.Net.HttpStatusCode.Accepted: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onAccepted(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get + /// validation events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task GetOperationResultPatch_Validate(string vaultName, string resourceGroupName, string subscriptionId, string operationId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(operationId),operationId); + } + } + + /// Gets the operation status for a resource. + /// The subscription Id. + /// + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task GetOperationStatus(string subscriptionId, string location, string operationId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/providers/Microsoft.DataProtection/locations/" + + global::System.Uri.EscapeDataString(location) + + "/operationStatus/" + + global::System.Uri.EscapeDataString(operationId) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.GetOperationStatus_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets the operation status for a resource. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task GetOperationStatusViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/providers/Microsoft.DataProtection/locations/(?[^/]+)/operationStatus/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationStatus/{operationId}'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var location = _match.Groups["location"].Value; + var operationId = _match.Groups["operationId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/providers/Microsoft.DataProtection/locations/" + + location + + "/operationStatus/" + + operationId + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.GetOperationStatus_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task GetOperationStatus_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The subscription Id. + /// + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task GetOperationStatus_Validate(string subscriptionId, string location, string operationId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(location),location); + await eventListener.AssertNotNull(nameof(operationId),operationId); + } + } + + /// Gets a job with id in a backup vault + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task JobGet(string subscriptionId, string resourceGroupName, string vaultName, string jobId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupJobs/" + + global::System.Uri.EscapeDataString(jobId) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.JobGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets a job with id in a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task JobGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupJobs/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var vaultName = _match.Groups["vaultName"].Value; + var jobId = _match.Groups["jobId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupJobs/" + + jobId + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.JobGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task JobGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation events + /// back. + /// + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task JobGet_Validate(string subscriptionId, string resourceGroupName, string vaultName, string jobId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(jobId),jobId); + } + } + + /// Returns list of jobs belonging to a backup vault + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task JobsList(string subscriptionId, string resourceGroupName, string vaultName, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupJobs" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.JobsList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns list of jobs belonging to a backup vault + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task JobsListViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupJobs$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var vaultName = _match.Groups["vaultName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupJobs" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.JobsList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task JobsList_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation events + /// back. + /// + /// The subscription Id. + /// The name of the resource group where the backup vault is present. + /// The name of the backup vault. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task JobsList_Validate(string subscriptionId, string resourceGroupName, string vaultName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + } + } + + /// Gets the operation result for a resource + /// The subscription Id. + /// + /// + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task OperationResultGet(string subscriptionId, string operationId, string location, global::System.Func onAccepted, global::System.Func onNoContent, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/providers/Microsoft.DataProtection/locations/" + + global::System.Uri.EscapeDataString(location) + + "/operationResults/" + + global::System.Uri.EscapeDataString(operationId) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.OperationResultGet_Call(request,onAccepted,onNoContent,eventListener,sender); + } + } + + /// Gets the operation result for a resource + /// + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task OperationResultGetViaIdentity(global::System.String viaIdentity, global::System.Func onAccepted, global::System.Func onNoContent, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/providers/Microsoft.DataProtection/locations/(?[^/]+)/operationResults/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationResults/{operationId}'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + var operationId = _match.Groups["operationId"].Value; + var location = _match.Groups["location"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/providers/Microsoft.DataProtection/locations/" + + location + + "/operationResults/" + + operationId + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.OperationResultGet_Call(request,onAccepted,onNoContent,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 202 (Accepted). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task OperationResultGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onAccepted, global::System.Func onNoContent, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.Accepted: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onAccepted(_response); + break; + } + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + throw new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException(_response); + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The subscription Id. + /// + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task OperationResultGet_Validate(string subscriptionId, string operationId, string location, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(operationId),operationId); + await eventListener.AssertNotNull(nameof(location),location); + } + } + + /// Returns the list of available operations. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task OperationsList(global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/providers/Microsoft.DataProtection/operations" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.OperationsList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns the list of available operations. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task OperationsListViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/providers/Microsoft.DataProtection/operations$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/providers/Microsoft.DataProtection/operations'"); + } + + // replace URI parameters with values from identity + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/providers/Microsoft.DataProtection/operations" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.OperationsList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task OperationsList_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryResponse.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task OperationsList_Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + + } + } + + /// Gets a Recovery Point using recoveryPointId for a Datasource. + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task RecoveryPointGet(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, string recoveryPointId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/recoveryPoints/" + + global::System.Uri.EscapeDataString(recoveryPointId) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.RecoveryPointGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Gets a Recovery Point using recoveryPointId for a Datasource. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task RecoveryPointGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/recoveryPoints/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints/{recoveryPointId}'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + var recoveryPointId = _match.Groups["recoveryPointId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/recoveryPoints/" + + recoveryPointId + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.RecoveryPointGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task RecoveryPointGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task RecoveryPointGet_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, string recoveryPointId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + await eventListener.AssertNotNull(nameof(recoveryPointId),recoveryPointId); + } + } + + /// Returns a list of Recovery Points for a DataSource in a vault. + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task RecoveryPointsGetList(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/backupVaults/" + + global::System.Uri.EscapeDataString(vaultName) + + "/backupInstances/" + + global::System.Uri.EscapeDataString(backupInstanceName) + + "/recoveryPoints" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.RecoveryPointsGetList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns a list of Recovery Points for a DataSource in a vault. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task RecoveryPointsGetListViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/backupVaults/(?[^/]+)/backupInstances/(?[^/]+)/recoveryPoints$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints'"); + } + + // replace URI parameters with values from identity + var vaultName = _match.Groups["vaultName"].Value; + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var backupInstanceName = _match.Groups["backupInstanceName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/backupVaults/" + + vaultName + + "/backupInstances/" + + backupInstanceName + + "/recoveryPoints" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.RecoveryPointsGetList_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task RecoveryPointsGetList_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will get validation + /// events back. + /// + /// The name of the backup vault. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the backup instance + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task RecoveryPointsGetList_Validate(string vaultName, string resourceGroupName, string subscriptionId, string backupInstanceName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(vaultName),vaultName); + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(backupInstanceName),backupInstanceName); + } + } + + /// Deletes a ResourceOperationGateKeeper resource from the resource group. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersDelete(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + global::System.Uri.EscapeDataString(resourceOperationGateKeepersName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Deletes a ResourceOperationGateKeeper resource from the resource group. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersDeleteViaIdentity(global::System.String viaIdentity, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceOperationGateKeepersName = _match.Groups["resourceOperationGateKeepersName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + resourceOperationGateKeepersName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Delete, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersDelete_Call(request,onOk,onNoContent,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns 204 (NoContent). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersDelete_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func onOk, global::System.Func onNoContent, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response); + break; + } + case global::System.Net.HttpStatusCode.NoContent: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onNoContent(_response); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you + /// will get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersDelete_Validate(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceOperationGateKeepersName),resourceOperationGateKeepersName); + } + } + + /// Returns a ResourceOperationGateKeeper belonging to a resource group. + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the ResourceOperationGateKeeper + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGet(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + global::System.Uri.EscapeDataString(resourceOperationGateKeepersName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInResourceGroup(string resourceGroupName, string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGetResourcesInResourceGroup_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInResourceGroupViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGetResourcesInResourceGroup_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Actual wire call for method. + /// + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInResourceGroup_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the + /// actual call, but you will get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInResourceGroup_Validate(string resourceGroupName, string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Returns ResourceOperationGateKeepers collection belonging to a subscription. + /// The subscription Id. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInSubscription(string subscriptionId, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGetResourcesInSubscription_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Returns ResourceOperationGateKeepers collection belonging to a subscription. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInSubscriptionViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/resourceOperationGateKeepers'"); + } + + // replace URI parameters with values from identity + var subscriptionId = _match.Groups["subscriptionId"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGetResourcesInSubscription_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Actual wire call for method. + /// + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInSubscription_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceList.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the + /// actual call, but you will get validation events back. + /// + /// The subscription Id. + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetResourcesInSubscription_Validate(string subscriptionId, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + } + } + + /// Returns a ResourceOperationGateKeeper belonging to a resource group. + /// + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGetViaIdentity(global::System.String viaIdentity, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceOperationGateKeepersName = _match.Groups["resourceOperationGateKeepersName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + resourceOperationGateKeepersName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersGet_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGet_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of the ResourceOperationGateKeeper + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersGet_Validate(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceOperationGateKeepersName),resourceOperationGateKeepersName); + } + } + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPatch(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + global::System.Uri.EscapeDataString(resourceOperationGateKeepersName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Patch, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersPatch_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPatchViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceOperationGateKeepersName = _match.Groups["resourceOperationGateKeepersName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + resourceOperationGateKeepersName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Patch, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersPatch_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPatch_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you + /// will get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPatch_Validate(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceOperationGateKeepersName),resourceOperationGateKeepersName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + + /// + /// Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPut(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + global::System.Uri.EscapeDataString(subscriptionId) + + "/resourceGroups/" + + global::System.Uri.EscapeDataString(resourceGroupName) + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + global::System.Uri.EscapeDataString(resourceOperationGateKeepersName) + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// + /// Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + /// + /// + /// Request body for operation + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + public async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPutViaIdentity(global::System.String viaIdentity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource body, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + var apiVersion = @"2020-01-01-alpha"; + // Constant Parameters + using( NoSynchronizationContext ) + { + // verify that Identity format is an exact match for uri + + var _match = new global::System.Text.RegularExpressions.Regex("^/subscriptions/(?[^/]+)/resourceGroups/(?[^/]+)/providers/Microsoft.DataProtection/resourceOperationGateKeepers/(?[^/]+)$").Match(viaIdentity); + if (!_match.Success) + { + throw new global::System.Exception("Invalid identity for URI '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}'"); + } + + // replace URI parameters with values from identity + var resourceGroupName = _match.Groups["resourceGroupName"].Value; + var subscriptionId = _match.Groups["subscriptionId"].Value; + var resourceOperationGateKeepersName = _match.Groups["resourceOperationGateKeepersName"].Value; + // construct URL + var _url = new global::System.Uri(global::System.Text.RegularExpressions.Regex.Replace( + "https://management.azure.com/subscriptions/" + + subscriptionId + + "/resourceGroups/" + + resourceGroupName + + "/providers/Microsoft.DataProtection/resourceOperationGateKeepers/" + + resourceOperationGateKeepersName + + "?" + + "api-version=" + global::System.Uri.EscapeDataString(apiVersion) + ,"\\?&*$|&*$|(\\?)&+|(&)&+","$1$2")); + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.URLCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + // generate request object + var request = new global::System.Net.Http.HttpRequestMessage(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Put, _url); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.RequestCreated, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.HeaderParametersAdded, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // set body content + request.Content = new global::System.Net.Http.StringContent(null != body ? body.ToJson(null).ToString() : @"{}", global::System.Text.Encoding.UTF8); + request.Content.Headers.ContentType = global::System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BodyContentSet, _url); if( eventListener.Token.IsCancellationRequested ) { return; } + // make the call + await this.ResourceOperationGatekeepersPut_Call(request,onOk,onDefault,eventListener,sender); + } + } + + /// Actual wire call for method. + /// the prepared HttpRequestMessage to send. + /// a delegate that is called when the remote service returns 200 (OK). + /// a delegate that is called when the remote service returns default (any response code not handled + /// elsewhere). + /// an instance that will receive events. + /// an instance of an Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync pipeline to use to make the request. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPut_Call(global::System.Net.Http.HttpRequestMessage request, global::System.Func, global::System.Threading.Tasks.Task> onOk, global::System.Func, global::System.Threading.Tasks.Task> onDefault, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.ISendAsync sender) + { + using( NoSynchronizationContext ) + { + global::System.Net.Http.HttpResponseMessage _response = null; + try + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeCall, request); if( eventListener.Token.IsCancellationRequested ) { return; } + _response = await sender.SendAsync(request, eventListener); + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ResponseCreated, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + var _contentType = _response.Content.Headers.ContentType?.MediaType; + + switch ( _response.StatusCode ) + { + case global::System.Net.HttpStatusCode.OK: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onOk(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + default: + { + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.BeforeResponseDispatch, _response); if( eventListener.Token.IsCancellationRequested ) { return; } + await onDefault(_response,_response.Content.ReadAsStringAsync().ContinueWith( body => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CloudError.FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(body.Result)) )); + break; + } + } + } + finally + { + // finally statements + await eventListener.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Finally, request, _response); + _response?.Dispose(); + request?.Dispose(); + } + } + } + + /// + /// Validation method for method. Call this like the actual call, but you will + /// get validation events back. + /// + /// The name of the resource group where the backup vault is present. + /// The subscription Id. + /// The name of ResourceOperationGatekeeper + /// Request body for operation + /// an instance that will receive events. + /// + /// A that will be complete when handling of the response is completed. + /// + internal async global::System.Threading.Tasks.Task ResourceOperationGatekeepersPut_Validate(string resourceGroupName, string subscriptionId, string resourceOperationGateKeepersName, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource body, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + using( NoSynchronizationContext ) + { + await eventListener.AssertNotNull(nameof(resourceGroupName),resourceGroupName); + await eventListener.AssertNotNull(nameof(subscriptionId),subscriptionId); + await eventListener.AssertNotNull(nameof(resourceOperationGateKeepersName),resourceOperationGateKeepersName); + await eventListener.AssertNotNull(nameof(body), body); + await eventListener.AssertObjectIsValid(nameof(body), body); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.PowerShell.cs new file mode 100644 index 000000000000..038057087db5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Delete option with duration + [System.ComponentModel.TypeConverter(typeof(AbsoluteDeleteOptionTypeConverter))] + public partial class AbsoluteDeleteOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AbsoluteDeleteOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AbsoluteDeleteOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AbsoluteDeleteOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AbsoluteDeleteOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Delete option with duration + [System.ComponentModel.TypeConverter(typeof(AbsoluteDeleteOptionTypeConverter))] + public partial interface IAbsoluteDeleteOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.TypeConverter.cs new file mode 100644 index 000000000000..982e5d0a21bb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AbsoluteDeleteOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AbsoluteDeleteOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AbsoluteDeleteOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AbsoluteDeleteOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.cs new file mode 100644 index 000000000000..a2a4f58f0ce5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.cs @@ -0,0 +1,56 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Delete option with duration + public partial class AbsoluteDeleteOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOptionInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption __deleteOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption(); + + /// Duration of deletion after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Duration { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)__deleteOption).Duration; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)__deleteOption).Duration = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)__deleteOption).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)__deleteOption).ObjectType = value; } + + /// Creates an new instance. + public AbsoluteDeleteOption() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__deleteOption), __deleteOption); + await eventListener.AssertObjectIsValid(nameof(__deleteOption), __deleteOption); + } + } + /// Delete option with duration + public partial interface IAbsoluteDeleteOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption + { + + } + /// Delete option with duration + internal partial interface IAbsoluteDeleteOptionInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.json.cs new file mode 100644 index 000000000000..93626b626b09 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AbsoluteDeleteOption.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Delete option with duration + public partial class AbsoluteDeleteOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AbsoluteDeleteOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __deleteOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption(json); + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAbsoluteDeleteOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AbsoluteDeleteOption(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __deleteOption?.ToJson(container, serializationMode); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.PowerShell.cs new file mode 100644 index 000000000000..e2c0955da162 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Adhoc backup rules + [System.ComponentModel.TypeConverter(typeof(AdHocBackupRuleOptionsTypeConverter))] + public partial class AdHocBackupRuleOptions + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AdHocBackupRuleOptions(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption) content.GetValueForProperty("TriggerOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).RuleName = (string) content.GetValueForProperty("RuleName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).RuleName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOptionRetentionTagOverride = (string) content.GetValueForProperty("TriggerOptionRetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOptionRetentionTagOverride, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AdHocBackupRuleOptions(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption) content.GetValueForProperty("TriggerOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).RuleName = (string) content.GetValueForProperty("RuleName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).RuleName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOptionRetentionTagOverride = (string) content.GetValueForProperty("TriggerOptionRetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)this).TriggerOptionRetentionTagOverride, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AdHocBackupRuleOptions(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AdHocBackupRuleOptions(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Adhoc backup rules + [System.ComponentModel.TypeConverter(typeof(AdHocBackupRuleOptionsTypeConverter))] + public partial interface IAdHocBackupRuleOptions + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.TypeConverter.cs new file mode 100644 index 000000000000..dffc2bda7223 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AdHocBackupRuleOptionsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AdHocBackupRuleOptions.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AdHocBackupRuleOptions.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AdHocBackupRuleOptions.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.cs new file mode 100644 index 000000000000..6134368f4b9b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.cs @@ -0,0 +1,68 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup rules + public partial class AdHocBackupRuleOptions : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal + { + + /// Internal Acessors for TriggerOption + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal.TriggerOption { get => (this._triggerOption = this._triggerOption ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOption()); set { {_triggerOption = value;} } } + + /// Backing field for property. + private string _ruleName; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RuleName { get => this._ruleName; set => this._ruleName = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption _triggerOption; + + /// Adhoc backup trigger option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption TriggerOption { get => (this._triggerOption = this._triggerOption ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOption()); set => this._triggerOption = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TriggerOptionRetentionTagOverride { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)TriggerOption).RetentionTagOverride; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)TriggerOption).RetentionTagOverride = value; } + + /// Creates an new instance. + public AdHocBackupRuleOptions() + { + + } + } + /// Adhoc backup rules + public partial interface IAdHocBackupRuleOptions : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"ruleName", + PossibleTypes = new [] { typeof(string) })] + string RuleName { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"retentionTagOverride", + PossibleTypes = new [] { typeof(string) })] + string TriggerOptionRetentionTagOverride { get; set; } + + } + /// Adhoc backup rules + internal partial interface IAdHocBackupRuleOptionsInternal + + { + string RuleName { get; set; } + /// Adhoc backup trigger option + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption TriggerOption { get; set; } + + string TriggerOptionRetentionTagOverride { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.json.cs new file mode 100644 index 000000000000..2f21bc4dcab3 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdHocBackupRuleOptions.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup rules + public partial class AdHocBackupRuleOptions + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AdHocBackupRuleOptions(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_triggerOption = If( json?.PropertyT("triggerOption"), out var __jsonTriggerOption) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOption.FromJson(__jsonTriggerOption) : TriggerOption;} + {_ruleName = If( json?.PropertyT("ruleName"), out var __jsonRuleName) ? (string)__jsonRuleName : (string)RuleName;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AdHocBackupRuleOptions(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._triggerOption ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._triggerOption.ToJson(null,serializationMode) : null, "triggerOption" ,container.Add ); + AddIf( null != (((object)this._ruleName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._ruleName.ToString()) : null, "ruleName" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.PowerShell.cs new file mode 100644 index 000000000000..22a2b73f8257 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Adhoc backup trigger option + [System.ComponentModel.TypeConverter(typeof(AdhocBackupTriggerOptionTypeConverter))] + public partial class AdhocBackupTriggerOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AdhocBackupTriggerOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)this).RetentionTagOverride = (string) content.GetValueForProperty("RetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)this).RetentionTagOverride, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AdhocBackupTriggerOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)this).RetentionTagOverride = (string) content.GetValueForProperty("RetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal)this).RetentionTagOverride, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AdhocBackupTriggerOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AdhocBackupTriggerOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Adhoc backup trigger option + [System.ComponentModel.TypeConverter(typeof(AdhocBackupTriggerOptionTypeConverter))] + public partial interface IAdhocBackupTriggerOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.TypeConverter.cs new file mode 100644 index 000000000000..31ef0e312eed --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AdhocBackupTriggerOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AdhocBackupTriggerOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AdhocBackupTriggerOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AdhocBackupTriggerOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.cs new file mode 100644 index 000000000000..f8770eefd687 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.cs @@ -0,0 +1,43 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup trigger option + public partial class AdhocBackupTriggerOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOptionInternal + { + + /// Backing field for property. + private string _retentionTagOverride; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RetentionTagOverride { get => this._retentionTagOverride; set => this._retentionTagOverride = value; } + + /// Creates an new instance. + public AdhocBackupTriggerOption() + { + + } + } + /// Adhoc backup trigger option + public partial interface IAdhocBackupTriggerOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"retentionTagOverride", + PossibleTypes = new [] { typeof(string) })] + string RetentionTagOverride { get; set; } + + } + /// Adhoc backup trigger option + internal partial interface IAdhocBackupTriggerOptionInternal + + { + string RetentionTagOverride { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.json.cs new file mode 100644 index 000000000000..f6c1dc5071f4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBackupTriggerOption.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup trigger option + public partial class AdhocBackupTriggerOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AdhocBackupTriggerOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_retentionTagOverride = If( json?.PropertyT("retentionTagOverride"), out var __jsonRetentionTagOverride) ? (string)__jsonRetentionTagOverride : (string)RetentionTagOverride;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AdhocBackupTriggerOption(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._retentionTagOverride)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._retentionTagOverride.ToString()) : null, "retentionTagOverride" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.PowerShell.cs new file mode 100644 index 000000000000..f770348a6179 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Adhoc backup tagging criteria + [System.ComponentModel.TypeConverter(typeof(AdhocBasedTaggingCriteriaTypeConverter))] + public partial class AdhocBasedTaggingCriteria + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AdhocBasedTaggingCriteria(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AdhocBasedTaggingCriteria(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AdhocBasedTaggingCriteria(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AdhocBasedTaggingCriteria(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Adhoc backup tagging criteria + [System.ComponentModel.TypeConverter(typeof(AdhocBasedTaggingCriteriaTypeConverter))] + public partial interface IAdhocBasedTaggingCriteria + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.TypeConverter.cs new file mode 100644 index 000000000000..ee54225239c6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AdhocBasedTaggingCriteriaTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AdhocBasedTaggingCriteria.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AdhocBasedTaggingCriteria.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AdhocBasedTaggingCriteria.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.cs new file mode 100644 index 000000000000..b350894139a4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.cs @@ -0,0 +1,89 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup tagging criteria + public partial class AdhocBasedTaggingCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal + { + + /// Internal Acessors for TagInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal.TagInfo { get => (this._tagInfo = this._tagInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag()); set { {_tagInfo = value;} } } + + /// Internal Acessors for TagInfoETag + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal.TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag = value; } + + /// Internal Acessors for TagInfoId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal.TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag _tagInfo; + + /// Retention tag information + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag TagInfo { get => (this._tagInfo = this._tagInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag()); set => this._tagInfo = value; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id; } + + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoTagName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).TagName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).TagName = value; } + + /// Creates an new instance. + public AdhocBasedTaggingCriteria() + { + + } + } + /// Adhoc backup tagging criteria + public partial interface IAdhocBasedTaggingCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + string TagInfoETag { get; } + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string TagInfoId { get; } + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention Tag Name to relate it to retention rule.", + SerializedName = @"tagName", + PossibleTypes = new [] { typeof(string) })] + string TagInfoTagName { get; set; } + + } + /// Adhoc backup tagging criteria + internal partial interface IAdhocBasedTaggingCriteriaInternal + + { + /// Retention tag information + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag TagInfo { get; set; } + /// Retention Tag version. + string TagInfoETag { get; set; } + /// Retention Tag version. + string TagInfoId { get; set; } + /// Retention Tag Name to relate it to retention rule. + string TagInfoTagName { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.json.cs new file mode 100644 index 000000000000..76e9faef0ddb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTaggingCriteria.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc backup tagging criteria + public partial class AdhocBasedTaggingCriteria + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AdhocBasedTaggingCriteria(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_tagInfo = If( json?.PropertyT("tagInfo"), out var __jsonTagInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag.FromJson(__jsonTagInfo) : TagInfo;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AdhocBasedTaggingCriteria(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._tagInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._tagInfo.ToJson(null,serializationMode) : null, "tagInfo" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.PowerShell.cs new file mode 100644 index 000000000000..f236d912051a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Adhoc trigger context + [System.ComponentModel.TypeConverter(typeof(AdhocBasedTriggerContextTypeConverter))] + public partial class AdhocBasedTriggerContext + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AdhocBasedTriggerContext(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria) content.GetValueForProperty("TaggingCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterion, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTaggingCriteriaTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterionTagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TaggingCriterionTagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterionTagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AdhocBasedTriggerContext(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria) content.GetValueForProperty("TaggingCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterion, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTaggingCriteriaTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterionTagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TaggingCriterionTagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TaggingCriterionTagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AdhocBasedTriggerContext(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AdhocBasedTriggerContext(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Adhoc trigger context + [System.ComponentModel.TypeConverter(typeof(AdhocBasedTriggerContextTypeConverter))] + public partial interface IAdhocBasedTriggerContext + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.TypeConverter.cs new file mode 100644 index 000000000000..cf4cf6b7ce34 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AdhocBasedTriggerContextTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AdhocBasedTriggerContext.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AdhocBasedTriggerContext.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AdhocBasedTriggerContext.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.cs new file mode 100644 index 000000000000..ebdbde99c45e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.cs @@ -0,0 +1,117 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc trigger context + public partial class AdhocBasedTriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext __triggerContext = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext(); + + /// Internal Acessors for TagInfoETag + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal.TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoETag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoETag = value; } + + /// Internal Acessors for TagInfoId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal.TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoId = value; } + + /// Internal Acessors for TaggingCriterion + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal.TaggingCriterion { get => (this._taggingCriterion = this._taggingCriterion ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTaggingCriteria()); set { {_taggingCriterion = value;} } } + + /// Internal Acessors for TaggingCriterionTagInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContextInternal.TaggingCriterionTagInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfo = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)__triggerContext).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)__triggerContext).ObjectType = value; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoETag; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoId; } + + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoTagName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoTagName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteriaInternal)TaggingCriterion).TagInfoTagName = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria _taggingCriterion; + + /// Tagging Criteria containing retention tag for adhoc backup. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria TaggingCriterion { get => (this._taggingCriterion = this._taggingCriterion ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTaggingCriteria()); set => this._taggingCriterion = value; } + + /// Creates an new instance. + public AdhocBasedTriggerContext() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__triggerContext), __triggerContext); + await eventListener.AssertObjectIsValid(nameof(__triggerContext), __triggerContext); + } + } + /// Adhoc trigger context + public partial interface IAdhocBasedTriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext + { + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + string TagInfoETag { get; } + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string TagInfoId { get; } + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention Tag Name to relate it to retention rule.", + SerializedName = @"tagName", + PossibleTypes = new [] { typeof(string) })] + string TagInfoTagName { get; set; } + + } + /// Adhoc trigger context + internal partial interface IAdhocBasedTriggerContextInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal + { + /// Retention Tag version. + string TagInfoETag { get; set; } + /// Retention Tag version. + string TagInfoId { get; set; } + /// Retention Tag Name to relate it to retention rule. + string TagInfoTagName { get; set; } + /// Tagging Criteria containing retention tag for adhoc backup. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTaggingCriteria TaggingCriterion { get; set; } + /// Retention tag information + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag TaggingCriterionTagInfo { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.json.cs new file mode 100644 index 000000000000..a8aabbf08af4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AdhocBasedTriggerContext.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Adhoc trigger context + public partial class AdhocBasedTriggerContext + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AdhocBasedTriggerContext(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __triggerContext = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext(json); + {_taggingCriterion = If( json?.PropertyT("taggingCriteria"), out var __jsonTaggingCriteria) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBasedTaggingCriteria.FromJson(__jsonTaggingCriteria) : TaggingCriterion;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBasedTriggerContext FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AdhocBasedTriggerContext(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __triggerContext?.ToJson(container, serializationMode); + AddIf( null != this._taggingCriterion ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._taggingCriterion.ToJson(null,serializationMode) : null, "taggingCriteria" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.PowerShell.cs new file mode 100644 index 000000000000..c835d3fe5aa3 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.PowerShell.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup discrete RecoveryPoint + [System.ComponentModel.TypeConverter(typeof(AzureBackupDiscreteRecoveryPointTypeConverter))] + public partial class AzureBackupDiscreteRecoveryPoint + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupDiscreteRecoveryPoint(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).FriendlyName = (string) content.GetValueForProperty("FriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).FriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointDataStoresDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[]) content.GetValueForProperty("RecoveryPointDataStoresDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointDataStoresDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RecoveryPointDataStoreDetailsTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointTime = (global::System.DateTime) content.GetValueForProperty("RecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointType = (string) content.GetValueForProperty("RecoveryPointType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagName = (string) content.GetValueForProperty("RetentionTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagVersion = (string) content.GetValueForProperty("RetentionTagVersion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagVersion, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupDiscreteRecoveryPoint(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).FriendlyName = (string) content.GetValueForProperty("FriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).FriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointDataStoresDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[]) content.GetValueForProperty("RecoveryPointDataStoresDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointDataStoresDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RecoveryPointDataStoreDetailsTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointTime = (global::System.DateTime) content.GetValueForProperty("RecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointType = (string) content.GetValueForProperty("RecoveryPointType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RecoveryPointType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagName = (string) content.GetValueForProperty("RetentionTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagVersion = (string) content.GetValueForProperty("RetentionTagVersion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal)this).RetentionTagVersion, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupDiscreteRecoveryPoint(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupDiscreteRecoveryPoint(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup discrete RecoveryPoint + [System.ComponentModel.TypeConverter(typeof(AzureBackupDiscreteRecoveryPointTypeConverter))] + public partial interface IAzureBackupDiscreteRecoveryPoint + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.TypeConverter.cs new file mode 100644 index 000000000000..07a7c82f382f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupDiscreteRecoveryPointTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupDiscreteRecoveryPoint.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupDiscreteRecoveryPoint.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupDiscreteRecoveryPoint.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.cs new file mode 100644 index 000000000000..6bb69a325e4c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup discrete RecoveryPoint + public partial class AzureBackupDiscreteRecoveryPoint : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPointInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint __azureBackupRecoveryPoint = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint(); + + /// Backing field for property. + private string _friendlyName; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string FriendlyName { get => this._friendlyName; set => this._friendlyName = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)__azureBackupRecoveryPoint).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)__azureBackupRecoveryPoint).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[] _recoveryPointDataStoresDetail; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[] RecoveryPointDataStoresDetail { get => this._recoveryPointDataStoresDetail; set => this._recoveryPointDataStoresDetail = value; } + + /// Backing field for property. + private global::System.DateTime _recoveryPointTime; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime RecoveryPointTime { get => this._recoveryPointTime; set => this._recoveryPointTime = value; } + + /// Backing field for property. + private string _recoveryPointType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryPointType { get => this._recoveryPointType; set => this._recoveryPointType = value; } + + /// Backing field for property. + private string _retentionTagName; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RetentionTagName { get => this._retentionTagName; set => this._retentionTagName = value; } + + /// Backing field for property. + private string _retentionTagVersion; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RetentionTagVersion { get => this._retentionTagVersion; set => this._retentionTagVersion = value; } + + /// Creates an new instance. + public AzureBackupDiscreteRecoveryPoint() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__azureBackupRecoveryPoint), __azureBackupRecoveryPoint); + await eventListener.AssertObjectIsValid(nameof(__azureBackupRecoveryPoint), __azureBackupRecoveryPoint); + } + } + /// Azure backup discrete RecoveryPoint + public partial interface IAzureBackupDiscreteRecoveryPoint : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"friendlyName", + PossibleTypes = new [] { typeof(string) })] + string FriendlyName { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointDataStoresDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[] RecoveryPointDataStoresDetail { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime RecoveryPointTime { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointType", + PossibleTypes = new [] { typeof(string) })] + string RecoveryPointType { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"retentionTagName", + PossibleTypes = new [] { typeof(string) })] + string RetentionTagName { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"retentionTagVersion", + PossibleTypes = new [] { typeof(string) })] + string RetentionTagVersion { get; set; } + + } + /// Azure backup discrete RecoveryPoint + internal partial interface IAzureBackupDiscreteRecoveryPointInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal + { + string FriendlyName { get; set; } + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails[] RecoveryPointDataStoresDetail { get; set; } + + global::System.DateTime RecoveryPointTime { get; set; } + + string RecoveryPointType { get; set; } + + string RetentionTagName { get; set; } + + string RetentionTagVersion { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.json.cs new file mode 100644 index 000000000000..4d3d6b1c9034 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupDiscreteRecoveryPoint.json.cs @@ -0,0 +1,121 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup discrete RecoveryPoint + public partial class AzureBackupDiscreteRecoveryPoint + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupDiscreteRecoveryPoint(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __azureBackupRecoveryPoint = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint(json); + {_friendlyName = If( json?.PropertyT("friendlyName"), out var __jsonFriendlyName) ? (string)__jsonFriendlyName : (string)FriendlyName;} + {_recoveryPointDataStoresDetail = If( json?.PropertyT("recoveryPointDataStoresDetails"), out var __jsonRecoveryPointDataStoresDetails) ? If( __jsonRecoveryPointDataStoresDetails as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RecoveryPointDataStoreDetails.FromJson(__u) )) ))() : null : RecoveryPointDataStoresDetail;} + {_recoveryPointTime = If( json?.PropertyT("recoveryPointTime"), out var __jsonRecoveryPointTime) ? global::System.DateTime.TryParse((string)__jsonRecoveryPointTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonRecoveryPointTimeValue) ? __jsonRecoveryPointTimeValue : RecoveryPointTime : RecoveryPointTime;} + {_recoveryPointType = If( json?.PropertyT("recoveryPointType"), out var __jsonRecoveryPointType) ? (string)__jsonRecoveryPointType : (string)RecoveryPointType;} + {_retentionTagName = If( json?.PropertyT("retentionTagName"), out var __jsonRetentionTagName) ? (string)__jsonRetentionTagName : (string)RetentionTagName;} + {_retentionTagVersion = If( json?.PropertyT("retentionTagVersion"), out var __jsonRetentionTagVersion) ? (string)__jsonRetentionTagVersion : (string)RetentionTagVersion;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupDiscreteRecoveryPoint FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupDiscreteRecoveryPoint(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __azureBackupRecoveryPoint?.ToJson(container, serializationMode); + AddIf( null != (((object)this._friendlyName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._friendlyName.ToString()) : null, "friendlyName" ,container.Add ); + if (null != this._recoveryPointDataStoresDetail) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._recoveryPointDataStoresDetail ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("recoveryPointDataStoresDetails",__w); + } + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointTime.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)), "recoveryPointTime" ,container.Add ); + AddIf( null != (((object)this._recoveryPointType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointType.ToString()) : null, "recoveryPointType" ,container.Add ); + AddIf( null != (((object)this._retentionTagName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._retentionTagName.ToString()) : null, "retentionTagName" ,container.Add ); + AddIf( null != (((object)this._retentionTagVersion)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._retentionTagVersion.ToString()) : null, "retentionTagVersion" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.PowerShell.cs new file mode 100644 index 000000000000..d79fef19820a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.PowerShell.cs @@ -0,0 +1,205 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// AzureBackup Job Class + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobTypeConverter))] + public partial class AzureBackupJob + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupJob(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo) content.GetValueForProperty("ExtendedInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ActivityId = (string) content.GetValueForProperty("ActivityId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ActivityId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceFriendlyName = (string) content.GetValueForProperty("BackupInstanceFriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceFriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceId = (string) content.GetValueForProperty("BackupInstanceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceId = (string) content.GetValueForProperty("DataSourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceLocation = (string) content.GetValueForProperty("DataSourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceName = (string) content.GetValueForProperty("DataSourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceSetName = (string) content.GetValueForProperty("DataSourceSetName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceSetName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceType = (string) content.GetValueForProperty("DataSourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Duration = (global::System.TimeSpan?) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Duration, (v) => v is global::System.TimeSpan _v ? _v : global::System.Xml.XmlConvert.ToTimeSpan( v.ToString() )); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ErrorDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).IsUserTriggered = (bool) content.GetValueForProperty("IsUserTriggered",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).IsUserTriggered, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).OperationCategory = (string) content.GetValueForProperty("OperationCategory",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).OperationCategory, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyName = (string) content.GetValueForProperty("PolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressEnabled = (bool) content.GetValueForProperty("ProgressEnabled",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressEnabled, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressUrl = (string) content.GetValueForProperty("ProgressUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).RestoreType = (string) content.GetValueForProperty("RestoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).RestoreType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceResourceGroup = (string) content.GetValueForProperty("SourceResourceGroup",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceResourceGroup, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceSubscriptionId = (string) content.GetValueForProperty("SourceSubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceSubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).StartTime = (global::System.DateTime) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SupportedAction = (string[]) content.GetValueForProperty("SupportedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SupportedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).VaultName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoSourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoTargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoTargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoTargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoAdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("ExtendedInfoAdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoAdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoBackupInstanceState = (string) content.GetValueForProperty("ExtendedInfoBackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoBackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoDataTransferedInByte = (double?) content.GetValueForProperty("ExtendedInfoDataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoDataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoRecoveryDestination = (string) content.GetValueForProperty("ExtendedInfoRecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoRecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("ExtendedInfoSubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupJob(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo) content.GetValueForProperty("ExtendedInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ActivityId = (string) content.GetValueForProperty("ActivityId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ActivityId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceFriendlyName = (string) content.GetValueForProperty("BackupInstanceFriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceFriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceId = (string) content.GetValueForProperty("BackupInstanceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).BackupInstanceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceId = (string) content.GetValueForProperty("DataSourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceLocation = (string) content.GetValueForProperty("DataSourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceName = (string) content.GetValueForProperty("DataSourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceSetName = (string) content.GetValueForProperty("DataSourceSetName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceSetName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceType = (string) content.GetValueForProperty("DataSourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).DataSourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Duration = (global::System.TimeSpan?) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Duration, (v) => v is global::System.TimeSpan _v ? _v : global::System.Xml.XmlConvert.ToTimeSpan( v.ToString() )); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ErrorDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).IsUserTriggered = (bool) content.GetValueForProperty("IsUserTriggered",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).IsUserTriggered, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).OperationCategory = (string) content.GetValueForProperty("OperationCategory",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).OperationCategory, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyName = (string) content.GetValueForProperty("PolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).PolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressEnabled = (bool) content.GetValueForProperty("ProgressEnabled",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressEnabled, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressUrl = (string) content.GetValueForProperty("ProgressUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ProgressUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).RestoreType = (string) content.GetValueForProperty("RestoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).RestoreType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceResourceGroup = (string) content.GetValueForProperty("SourceResourceGroup",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceResourceGroup, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceSubscriptionId = (string) content.GetValueForProperty("SourceSubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceSubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).StartTime = (global::System.DateTime) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SupportedAction = (string[]) content.GetValueForProperty("SupportedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SupportedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).VaultName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoSourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoTargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoTargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoTargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoAdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("ExtendedInfoAdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoAdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoBackupInstanceState = (string) content.GetValueForProperty("ExtendedInfoBackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoBackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoDataTransferedInByte = (double?) content.GetValueForProperty("ExtendedInfoDataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoDataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoRecoveryDestination = (string) content.GetValueForProperty("ExtendedInfoRecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoRecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("ExtendedInfoSubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).ExtendedInfoSubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupJob(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupJob(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// AzureBackup Job Class + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobTypeConverter))] + public partial interface IAzureBackupJob + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.TypeConverter.cs new file mode 100644 index 000000000000..921afe6a2dea --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupJobTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupJob.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupJob.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupJob.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.cs new file mode 100644 index 000000000000..a79d51fee7de --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.cs @@ -0,0 +1,663 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Job Class + public partial class AzureBackupJob : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal + { + + /// Backing field for property. + private string _activityId; + + /// Job Activity Id + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ActivityId { get => this._activityId; set => this._activityId = value; } + + /// Backing field for property. + private string _backupInstanceFriendlyName; + + /// Name of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupInstanceFriendlyName { get => this._backupInstanceFriendlyName; set => this._backupInstanceFriendlyName = value; } + + /// Backing field for property. + private string _backupInstanceId; + + /// ARM ID of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupInstanceId { get => this._backupInstanceId; } + + /// Backing field for property. + private string _dataSourceId; + + /// ARM ID of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DataSourceId { get => this._dataSourceId; set => this._dataSourceId = value; } + + /// Backing field for property. + private string _dataSourceLocation; + + /// Location of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DataSourceLocation { get => this._dataSourceLocation; set => this._dataSourceLocation = value; } + + /// Backing field for property. + private string _dataSourceName; + + /// User Friendly Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DataSourceName { get => this._dataSourceName; set => this._dataSourceName = value; } + + /// Backing field for property. + private string _dataSourceSetName; + + /// Data Source Set Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DataSourceSetName { get => this._dataSourceSetName; set => this._dataSourceSetName = value; } + + /// Backing field for property. + private string _dataSourceType; + + /// Type of DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DataSourceType { get => this._dataSourceType; set => this._dataSourceType = value; } + + /// Backing field for property. + private global::System.TimeSpan? _duration; + + /// Total run time of the job. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.TimeSpan? Duration { get => this._duration; } + + /// Backing field for property. + private global::System.DateTime? _endTime; + + /// EndTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? EndTime { get => this._endTime; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] _errorDetail; + + /// A List, detatiling the errors related to the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get => this._errorDetail; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo _extendedInfo; + + /// Extended Information about the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo ExtendedInfo { get => (this._extendedInfo = this._extendedInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfo()); } + + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).AdditionalDetail; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).AdditionalDetail = value; } + + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ExtendedInfoBackupInstanceState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).BackupInstanceState; } + + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public double? ExtendedInfoDataTransferedInByte { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).DataTransferedInByte; } + + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ExtendedInfoRecoveryDestination { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).RecoveryDestination; } + + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SubTask; } + + /// Backing field for property. + private bool _isUserTriggered; + + /// Indicated that whether the job is adhoc(true) or scheduled(false) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool IsUserTriggered { get => this._isUserTriggered; set => this._isUserTriggered = value; } + + /// Internal Acessors for BackupInstanceId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.BackupInstanceId { get => this._backupInstanceId; set { {_backupInstanceId = value;} } } + + /// Internal Acessors for Duration + global::System.TimeSpan? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.Duration { get => this._duration; set { {_duration = value;} } } + + /// Internal Acessors for EndTime + global::System.DateTime? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.EndTime { get => this._endTime; set { {_endTime = value;} } } + + /// Internal Acessors for ErrorDetail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ErrorDetail { get => this._errorDetail; set { {_errorDetail = value;} } } + + /// Internal Acessors for ExtendedInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfo { get => (this._extendedInfo = this._extendedInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfo()); set { {_extendedInfo = value;} } } + + /// Internal Acessors for ExtendedInfoBackupInstanceState + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoBackupInstanceState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).BackupInstanceState; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).BackupInstanceState = value; } + + /// Internal Acessors for ExtendedInfoDataTransferedInByte + double? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoDataTransferedInByte { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).DataTransferedInByte; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).DataTransferedInByte = value; } + + /// Internal Acessors for ExtendedInfoRecoveryDestination + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoRecoveryDestination { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).RecoveryDestination; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).RecoveryDestination = value; } + + /// Internal Acessors for ExtendedInfoSourceRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoSourceRecoverPoint { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPoint; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPoint = value; } + + /// Internal Acessors for ExtendedInfoSubTask + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoSubTask { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SubTask; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SubTask = value; } + + /// Internal Acessors for ExtendedInfoTargetRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ExtendedInfoTargetRecoverPoint { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPoint; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPoint = value; } + + /// Internal Acessors for PolicyId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.PolicyId { get => this._policyId; set { {_policyId = value;} } } + + /// Internal Acessors for PolicyName + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.PolicyName { get => this._policyName; set { {_policyName = value;} } } + + /// Internal Acessors for ProgressUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.ProgressUrl { get => this._progressUrl; set { {_progressUrl = value;} } } + + /// Internal Acessors for RestoreType + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal.RestoreType { get => this._restoreType; set { {_restoreType = value;} } } + + /// Backing field for property. + private string _operation; + + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Operation { get => this._operation; set => this._operation = value; } + + /// Backing field for property. + private string _operationCategory; + + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string OperationCategory { get => this._operationCategory; set => this._operationCategory = value; } + + /// Backing field for property. + private string _policyId; + + /// ARM ID of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string PolicyId { get => this._policyId; } + + /// Backing field for property. + private string _policyName; + + /// Name of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string PolicyName { get => this._policyName; } + + /// Backing field for property. + private bool _progressEnabled; + + /// Indicated whether progress is enabled for the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool ProgressEnabled { get => this._progressEnabled; set => this._progressEnabled = value; } + + /// Backing field for property. + private string _progressUrl; + + /// Url which contains job's progress + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ProgressUrl { get => this._progressUrl; } + + /// Backing field for property. + private string _restoreType; + + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RestoreType { get => this._restoreType; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPointRecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPointRecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? SourceRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPointRecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).SourceRecoverPointRecoveryPointTime = value; } + + /// Backing field for property. + private string _sourceResourceGroup; + + /// Name of the Datasource's Resource Group + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string SourceResourceGroup { get => this._sourceResourceGroup; set => this._sourceResourceGroup = value; } + + /// Backing field for property. + private string _sourceSubscriptionId; + + /// SubscriptionId corresponding to the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string SourceSubscriptionId { get => this._sourceSubscriptionId; set => this._sourceSubscriptionId = value; } + + /// Backing field for property. + private global::System.DateTime _startTime; + + /// StartTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime StartTime { get => this._startTime; set => this._startTime = value; } + + /// Backing field for property. + private string _status; + + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Status { get => this._status; set => this._status = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// Subscription Id of the corresponding backup vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string[] _supportedAction; + + /// List of supported actions + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string[] SupportedAction { get => this._supportedAction; set => this._supportedAction = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TargetRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPointRecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPointRecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? TargetRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPointRecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)ExtendedInfo).TargetRecoverPointRecoveryPointTime = value; } + + /// Backing field for property. + private string _vaultName; + + /// Name of the vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// Creates an new instance. + public AzureBackupJob() + { + + } + } + /// AzureBackup Job Class + public partial interface IAzureBackupJob : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Job Activity Id + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Job Activity Id", + SerializedName = @"activityID", + PossibleTypes = new [] { typeof(string) })] + string ActivityId { get; set; } + /// Name of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the Backup Instance", + SerializedName = @"backupInstanceFriendlyName", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceFriendlyName { get; set; } + /// ARM ID of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"ARM ID of the Backup Instance", + SerializedName = @"backupInstanceId", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceId { get; } + /// ARM ID of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"ARM ID of the DataSource", + SerializedName = @"dataSourceId", + PossibleTypes = new [] { typeof(string) })] + string DataSourceId { get; set; } + /// Location of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Location of the DataSource", + SerializedName = @"dataSourceLocation", + PossibleTypes = new [] { typeof(string) })] + string DataSourceLocation { get; set; } + /// User Friendly Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"User Friendly Name of the DataSource", + SerializedName = @"dataSourceName", + PossibleTypes = new [] { typeof(string) })] + string DataSourceName { get; set; } + /// Data Source Set Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Data Source Set Name of the DataSource", + SerializedName = @"dataSourceSetName", + PossibleTypes = new [] { typeof(string) })] + string DataSourceSetName { get; set; } + /// Type of DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of DataSource", + SerializedName = @"dataSourceType", + PossibleTypes = new [] { typeof(string) })] + string DataSourceType { get; set; } + /// Total run time of the job. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Total run time of the job.", + SerializedName = @"duration", + PossibleTypes = new [] { typeof(global::System.TimeSpan) })] + global::System.TimeSpan? Duration { get; } + /// EndTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"EndTime of the job(in UTC)", + SerializedName = @"endTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? EndTime { get; } + /// A List, detatiling the errors related to the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"A List, detatiling the errors related to the job", + SerializedName = @"errorDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get; } + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Job's Additional Details", + SerializedName = @"additionalDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get; set; } + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"State of the Backup Instance", + SerializedName = @"backupInstanceState", + PossibleTypes = new [] { typeof(string) })] + string ExtendedInfoBackupInstanceState { get; } + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Number of bytes transfered", + SerializedName = @"dataTransferedInBytes", + PossibleTypes = new [] { typeof(double) })] + double? ExtendedInfoDataTransferedInByte { get; } + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Destination where restore is done", + SerializedName = @"recoveryDestination", + PossibleTypes = new [] { typeof(string) })] + string ExtendedInfoRecoveryDestination { get; } + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"List of Sub Tasks of the job", + SerializedName = @"subTasks", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get; } + /// Indicated that whether the job is adhoc(true) or scheduled(false) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Indicated that whether the job is adhoc(true) or scheduled(false)", + SerializedName = @"isUserTriggered", + PossibleTypes = new [] { typeof(bool) })] + bool IsUserTriggered { get; set; } + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure", + SerializedName = @"operation", + PossibleTypes = new [] { typeof(string) })] + string Operation { get; set; } + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"It indicates the type of Job i.e. Backup/Restore/Retention/Management", + SerializedName = @"operationCategory", + PossibleTypes = new [] { typeof(string) })] + string OperationCategory { get; set; } + /// ARM ID of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"ARM ID of the policy", + SerializedName = @"policyId", + PossibleTypes = new [] { typeof(string) })] + string PolicyId { get; } + /// Name of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Name of the policy", + SerializedName = @"policyName", + PossibleTypes = new [] { typeof(string) })] + string PolicyName { get; } + /// Indicated whether progress is enabled for the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Indicated whether progress is enabled for the job", + SerializedName = @"progressEnabled", + PossibleTypes = new [] { typeof(bool) })] + bool ProgressEnabled { get; set; } + /// Url which contains job's progress + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Url which contains job's progress", + SerializedName = @"progressUrl", + PossibleTypes = new [] { typeof(string) })] + string ProgressUrl { get; } + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR", + SerializedName = @"restoreType", + PossibleTypes = new [] { typeof(string) })] + string RestoreType { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string SourceRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// Name of the Datasource's Resource Group + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the Datasource's Resource Group", + SerializedName = @"sourceResourceGroup", + PossibleTypes = new [] { typeof(string) })] + string SourceResourceGroup { get; set; } + /// SubscriptionId corresponding to the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"SubscriptionId corresponding to the DataSource", + SerializedName = @"sourceSubscriptionID", + PossibleTypes = new [] { typeof(string) })] + string SourceSubscriptionId { get; set; } + /// StartTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"StartTime of the job(in UTC)", + SerializedName = @"startTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime StartTime { get; set; } + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning", + SerializedName = @"status", + PossibleTypes = new [] { typeof(string) })] + string Status { get; set; } + /// Subscription Id of the corresponding backup vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Subscription Id of the corresponding backup vault", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + string SubscriptionId { get; set; } + /// List of supported actions + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"List of supported actions", + SerializedName = @"supportedActions", + PossibleTypes = new [] { typeof(string) })] + string[] SupportedAction { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string TargetRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + /// Name of the vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the vault", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + string VaultName { get; set; } + + } + /// AzureBackup Job Class + internal partial interface IAzureBackupJobInternal + + { + /// Job Activity Id + string ActivityId { get; set; } + /// Name of the Backup Instance + string BackupInstanceFriendlyName { get; set; } + /// ARM ID of the Backup Instance + string BackupInstanceId { get; set; } + /// ARM ID of the DataSource + string DataSourceId { get; set; } + /// Location of the DataSource + string DataSourceLocation { get; set; } + /// User Friendly Name of the DataSource + string DataSourceName { get; set; } + /// Data Source Set Name of the DataSource + string DataSourceSetName { get; set; } + /// Type of DataSource + string DataSourceType { get; set; } + /// Total run time of the job. + global::System.TimeSpan? Duration { get; set; } + /// EndTime of the job(in UTC) + global::System.DateTime? EndTime { get; set; } + /// A List, detatiling the errors related to the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get; set; } + /// Extended Information about the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo ExtendedInfo { get; set; } + /// Job's Additional Details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get; set; } + /// State of the Backup Instance + string ExtendedInfoBackupInstanceState { get; set; } + /// Number of bytes transfered + double? ExtendedInfoDataTransferedInByte { get; set; } + /// Destination where restore is done + string ExtendedInfoRecoveryDestination { get; set; } + /// Details of the Source Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails ExtendedInfoSourceRecoverPoint { get; set; } + /// List of Sub Tasks of the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get; set; } + /// Details of the Target Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails ExtendedInfoTargetRecoverPoint { get; set; } + /// Indicated that whether the job is adhoc(true) or scheduled(false) + bool IsUserTriggered { get; set; } + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + string Operation { get; set; } + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + string OperationCategory { get; set; } + /// ARM ID of the policy + string PolicyId { get; set; } + /// Name of the policy + string PolicyName { get; set; } + /// Indicated whether progress is enabled for the job + bool ProgressEnabled { get; set; } + /// Url which contains job's progress + string ProgressUrl { get; set; } + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + string RestoreType { get; set; } + + string SourceRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// Name of the Datasource's Resource Group + string SourceResourceGroup { get; set; } + /// SubscriptionId corresponding to the DataSource + string SourceSubscriptionId { get; set; } + /// StartTime of the job(in UTC) + global::System.DateTime StartTime { get; set; } + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + string Status { get; set; } + /// Subscription Id of the corresponding backup vault + string SubscriptionId { get; set; } + /// List of supported actions + string[] SupportedAction { get; set; } + + string TargetRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + /// Name of the vault + string VaultName { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.json.cs new file mode 100644 index 000000000000..ff8b1024cbe0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJob.json.cs @@ -0,0 +1,196 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Job Class + public partial class AzureBackupJob + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupJob(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_extendedInfo = If( json?.PropertyT("extendedInfo"), out var __jsonExtendedInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfo.FromJson(__jsonExtendedInfo) : ExtendedInfo;} + {_activityId = If( json?.PropertyT("activityID"), out var __jsonActivityId) ? (string)__jsonActivityId : (string)ActivityId;} + {_backupInstanceFriendlyName = If( json?.PropertyT("backupInstanceFriendlyName"), out var __jsonBackupInstanceFriendlyName) ? (string)__jsonBackupInstanceFriendlyName : (string)BackupInstanceFriendlyName;} + {_backupInstanceId = If( json?.PropertyT("backupInstanceId"), out var __jsonBackupInstanceId) ? (string)__jsonBackupInstanceId : (string)BackupInstanceId;} + {_dataSourceId = If( json?.PropertyT("dataSourceId"), out var __jsonDataSourceId) ? (string)__jsonDataSourceId : (string)DataSourceId;} + {_dataSourceLocation = If( json?.PropertyT("dataSourceLocation"), out var __jsonDataSourceLocation) ? (string)__jsonDataSourceLocation : (string)DataSourceLocation;} + {_dataSourceName = If( json?.PropertyT("dataSourceName"), out var __jsonDataSourceName) ? (string)__jsonDataSourceName : (string)DataSourceName;} + {_dataSourceSetName = If( json?.PropertyT("dataSourceSetName"), out var __jsonDataSourceSetName) ? (string)__jsonDataSourceSetName : (string)DataSourceSetName;} + {_dataSourceType = If( json?.PropertyT("dataSourceType"), out var __jsonDataSourceType) ? (string)__jsonDataSourceType : (string)DataSourceType;} + {_duration = If( json?.PropertyT("duration"), out var __jsonDuration) ? global::System.Xml.XmlConvert.ToTimeSpan( __jsonDuration ) : Duration;} + {_endTime = If( json?.PropertyT("endTime"), out var __jsonEndTime) ? global::System.DateTime.TryParse((string)__jsonEndTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonEndTimeValue) ? __jsonEndTimeValue : EndTime : EndTime;} + {_errorDetail = If( json?.PropertyT("errorDetails"), out var __jsonErrorDetails) ? If( __jsonErrorDetails as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError.FromJson(__u) )) ))() : null : ErrorDetail;} + {_isUserTriggered = If( json?.PropertyT("isUserTriggered"), out var __jsonIsUserTriggered) ? (bool)__jsonIsUserTriggered : IsUserTriggered;} + {_operation = If( json?.PropertyT("operation"), out var __jsonOperation) ? (string)__jsonOperation : (string)Operation;} + {_operationCategory = If( json?.PropertyT("operationCategory"), out var __jsonOperationCategory) ? (string)__jsonOperationCategory : (string)OperationCategory;} + {_policyId = If( json?.PropertyT("policyId"), out var __jsonPolicyId) ? (string)__jsonPolicyId : (string)PolicyId;} + {_policyName = If( json?.PropertyT("policyName"), out var __jsonPolicyName) ? (string)__jsonPolicyName : (string)PolicyName;} + {_progressEnabled = If( json?.PropertyT("progressEnabled"), out var __jsonProgressEnabled) ? (bool)__jsonProgressEnabled : ProgressEnabled;} + {_progressUrl = If( json?.PropertyT("progressUrl"), out var __jsonProgressUrl) ? (string)__jsonProgressUrl : (string)ProgressUrl;} + {_restoreType = If( json?.PropertyT("restoreType"), out var __jsonRestoreType) ? (string)__jsonRestoreType : (string)RestoreType;} + {_sourceResourceGroup = If( json?.PropertyT("sourceResourceGroup"), out var __jsonSourceResourceGroup) ? (string)__jsonSourceResourceGroup : (string)SourceResourceGroup;} + {_sourceSubscriptionId = If( json?.PropertyT("sourceSubscriptionID"), out var __jsonSourceSubscriptionId) ? (string)__jsonSourceSubscriptionId : (string)SourceSubscriptionId;} + {_startTime = If( json?.PropertyT("startTime"), out var __jsonStartTime) ? global::System.DateTime.TryParse((string)__jsonStartTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonStartTimeValue) ? __jsonStartTimeValue : StartTime : StartTime;} + {_status = If( json?.PropertyT("status"), out var __jsonStatus) ? (string)__jsonStatus : (string)Status;} + {_subscriptionId = If( json?.PropertyT("subscriptionId"), out var __jsonSubscriptionId) ? (string)__jsonSubscriptionId : (string)SubscriptionId;} + {_supportedAction = If( json?.PropertyT("supportedActions"), out var __jsonSupportedActions) ? If( __jsonSupportedActions as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __q) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__q, (__p)=>(string) (__p is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __o ? (string)(__o.ToString()) : null)) ))() : null : SupportedAction;} + {_vaultName = If( json?.PropertyT("vaultName"), out var __jsonVaultName) ? (string)__jsonVaultName : (string)VaultName;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupJob(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._extendedInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._extendedInfo.ToJson(null,serializationMode) : null, "extendedInfo" ,container.Add ); + } + AddIf( null != (((object)this._activityId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._activityId.ToString()) : null, "activityID" ,container.Add ); + AddIf( null != (((object)this._backupInstanceFriendlyName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupInstanceFriendlyName.ToString()) : null, "backupInstanceFriendlyName" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._backupInstanceId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupInstanceId.ToString()) : null, "backupInstanceId" ,container.Add ); + } + AddIf( null != (((object)this._dataSourceId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataSourceId.ToString()) : null, "dataSourceId" ,container.Add ); + AddIf( null != (((object)this._dataSourceLocation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataSourceLocation.ToString()) : null, "dataSourceLocation" ,container.Add ); + AddIf( null != (((object)this._dataSourceName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataSourceName.ToString()) : null, "dataSourceName" ,container.Add ); + AddIf( null != (((object)this._dataSourceSetName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataSourceSetName.ToString()) : null, "dataSourceSetName" ,container.Add ); + AddIf( null != (((object)this._dataSourceType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataSourceType.ToString()) : null, "dataSourceType" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)(null != this._duration ? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(global::System.Xml.XmlConvert.ToString((global::System.TimeSpan)this._duration)): null), "duration" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._endTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._endTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "endTime" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + if (null != this._errorDetail) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._errorDetail ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("errorDetails",__w); + } + } + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean(this._isUserTriggered), "isUserTriggered" ,container.Add ); + AddIf( null != (((object)this._operation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._operation.ToString()) : null, "operation" ,container.Add ); + AddIf( null != (((object)this._operationCategory)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._operationCategory.ToString()) : null, "operationCategory" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._policyId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._policyId.ToString()) : null, "policyId" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._policyName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._policyName.ToString()) : null, "policyName" ,container.Add ); + } + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean(this._progressEnabled), "progressEnabled" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._progressUrl)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._progressUrl.ToString()) : null, "progressUrl" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._restoreType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._restoreType.ToString()) : null, "restoreType" ,container.Add ); + } + AddIf( null != (((object)this._sourceResourceGroup)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._sourceResourceGroup.ToString()) : null, "sourceResourceGroup" ,container.Add ); + AddIf( null != (((object)this._sourceSubscriptionId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._sourceSubscriptionId.ToString()) : null, "sourceSubscriptionID" ,container.Add ); + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._startTime.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)), "startTime" ,container.Add ); + AddIf( null != (((object)this._status)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._status.ToString()) : null, "status" ,container.Add ); + AddIf( null != (((object)this._subscriptionId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._subscriptionId.ToString()) : null, "subscriptionId" ,container.Add ); + if (null != this._supportedAction) + { + var __r = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __s in this._supportedAction ) + { + AddIf(null != (((object)__s)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__s.ToString()) : null ,__r.Add); + } + container.Add("supportedActions",__r); + } + AddIf( null != (((object)this._vaultName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._vaultName.ToString()) : null, "vaultName" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.PowerShell.cs new file mode 100644 index 000000000000..862c5574db0b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.PowerShell.cs @@ -0,0 +1,215 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// AzureBackup Job Resource Class + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobResourceTypeConverter))] + public partial class AzureBackupJobResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupJobResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo) content.GetValueForProperty("ExtendedInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ActivityId = (string) content.GetValueForProperty("ActivityId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ActivityId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceFriendlyName = (string) content.GetValueForProperty("BackupInstanceFriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceFriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceId = (string) content.GetValueForProperty("BackupInstanceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceId = (string) content.GetValueForProperty("DataSourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceLocation = (string) content.GetValueForProperty("DataSourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceName = (string) content.GetValueForProperty("DataSourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceSetName = (string) content.GetValueForProperty("DataSourceSetName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceSetName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceType = (string) content.GetValueForProperty("DataSourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Duration = (global::System.TimeSpan?) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Duration, (v) => v is global::System.TimeSpan _v ? _v : global::System.Xml.XmlConvert.ToTimeSpan( v.ToString() )); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ErrorDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).IsUserTriggered = (bool) content.GetValueForProperty("IsUserTriggered",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).IsUserTriggered, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).OperationCategory = (string) content.GetValueForProperty("OperationCategory",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).OperationCategory, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyName = (string) content.GetValueForProperty("PolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressEnabled = (bool) content.GetValueForProperty("ProgressEnabled",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressEnabled, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressUrl = (string) content.GetValueForProperty("ProgressUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).RestoreType = (string) content.GetValueForProperty("RestoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).RestoreType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceResourceGroup = (string) content.GetValueForProperty("SourceResourceGroup",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceResourceGroup, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceSubscriptionId = (string) content.GetValueForProperty("SourceSubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceSubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).StartTime = (global::System.DateTime) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SupportedAction = (string[]) content.GetValueForProperty("SupportedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SupportedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).VaultName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoSourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoTargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoTargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoTargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoAdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("ExtendedInfoAdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoAdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoBackupInstanceState = (string) content.GetValueForProperty("ExtendedInfoBackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoBackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoDataTransferedInByte = (double?) content.GetValueForProperty("ExtendedInfoDataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoDataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoRecoveryDestination = (string) content.GetValueForProperty("ExtendedInfoRecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoRecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("ExtendedInfoSubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupJobResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo) content.GetValueForProperty("ExtendedInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ActivityId = (string) content.GetValueForProperty("ActivityId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ActivityId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceFriendlyName = (string) content.GetValueForProperty("BackupInstanceFriendlyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceFriendlyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceId = (string) content.GetValueForProperty("BackupInstanceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).BackupInstanceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceId = (string) content.GetValueForProperty("DataSourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceLocation = (string) content.GetValueForProperty("DataSourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceName = (string) content.GetValueForProperty("DataSourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceSetName = (string) content.GetValueForProperty("DataSourceSetName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceSetName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceType = (string) content.GetValueForProperty("DataSourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).DataSourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Duration = (global::System.TimeSpan?) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Duration, (v) => v is global::System.TimeSpan _v ? _v : global::System.Xml.XmlConvert.ToTimeSpan( v.ToString() )); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ErrorDetail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).IsUserTriggered = (bool) content.GetValueForProperty("IsUserTriggered",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).IsUserTriggered, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).OperationCategory = (string) content.GetValueForProperty("OperationCategory",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).OperationCategory, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyName = (string) content.GetValueForProperty("PolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).PolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressEnabled = (bool) content.GetValueForProperty("ProgressEnabled",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressEnabled, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressUrl = (string) content.GetValueForProperty("ProgressUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ProgressUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).RestoreType = (string) content.GetValueForProperty("RestoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).RestoreType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceResourceGroup = (string) content.GetValueForProperty("SourceResourceGroup",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceResourceGroup, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceSubscriptionId = (string) content.GetValueForProperty("SourceSubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceSubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).StartTime = (global::System.DateTime) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SupportedAction = (string[]) content.GetValueForProperty("SupportedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SupportedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).VaultName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoSourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoTargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("ExtendedInfoTargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoTargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoAdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("ExtendedInfoAdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoAdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoBackupInstanceState = (string) content.GetValueForProperty("ExtendedInfoBackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoBackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoDataTransferedInByte = (double?) content.GetValueForProperty("ExtendedInfoDataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoDataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoRecoveryDestination = (string) content.GetValueForProperty("ExtendedInfoRecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoRecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("ExtendedInfoSubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).ExtendedInfoSubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupJobResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupJobResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// AzureBackup Job Resource Class + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobResourceTypeConverter))] + public partial interface IAzureBackupJobResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.TypeConverter.cs new file mode 100644 index 000000000000..604f7e334e0e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupJobResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupJobResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupJobResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupJobResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.cs new file mode 100644 index 000000000000..9cdb1b235be0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.cs @@ -0,0 +1,632 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Job Resource Class + public partial class AzureBackupJobResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(); + + /// Job Activity Id + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ActivityId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ActivityId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ActivityId = value; } + + /// Name of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string BackupInstanceFriendlyName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).BackupInstanceFriendlyName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).BackupInstanceFriendlyName = value; } + + /// ARM ID of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string BackupInstanceId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).BackupInstanceId; } + + /// ARM ID of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataSourceId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceId = value; } + + /// Location of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataSourceLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceLocation = value; } + + /// User Friendly Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataSourceName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceName = value; } + + /// Data Source Set Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataSourceSetName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceSetName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceSetName = value; } + + /// Type of DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataSourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).DataSourceType = value; } + + /// Total run time of the job. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.TimeSpan? Duration { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Duration; } + + /// EndTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? EndTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).EndTime; } + + /// A List, detatiling the errors related to the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ErrorDetail; } + + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoAdditionalDetail; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoAdditionalDetail = value; } + + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ExtendedInfoBackupInstanceState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoBackupInstanceState; } + + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public double? ExtendedInfoDataTransferedInByte { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoDataTransferedInByte; } + + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ExtendedInfoRecoveryDestination { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoRecoveryDestination; } + + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoSubTask; } + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; } + + /// Indicated that whether the job is adhoc(true) or scheduled(false) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public bool IsUserTriggered { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).IsUserTriggered; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).IsUserTriggered = value; } + + /// Internal Acessors for BackupInstanceId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.BackupInstanceId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).BackupInstanceId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).BackupInstanceId = value; } + + /// Internal Acessors for Duration + global::System.TimeSpan? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.Duration { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Duration; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Duration = value; } + + /// Internal Acessors for EndTime + global::System.DateTime? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.EndTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).EndTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).EndTime = value; } + + /// Internal Acessors for ErrorDetail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ErrorDetail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ErrorDetail; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ErrorDetail = value; } + + /// Internal Acessors for ExtendedInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfo = value; } + + /// Internal Acessors for ExtendedInfoBackupInstanceState + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoBackupInstanceState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoBackupInstanceState; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoBackupInstanceState = value; } + + /// Internal Acessors for ExtendedInfoDataTransferedInByte + double? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoDataTransferedInByte { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoDataTransferedInByte; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoDataTransferedInByte = value; } + + /// Internal Acessors for ExtendedInfoRecoveryDestination + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoRecoveryDestination { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoRecoveryDestination; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoRecoveryDestination = value; } + + /// Internal Acessors for ExtendedInfoSourceRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoSourceRecoverPoint { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoSourceRecoverPoint; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoSourceRecoverPoint = value; } + + /// Internal Acessors for ExtendedInfoSubTask + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoSubTask { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoSubTask; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoSubTask = value; } + + /// Internal Acessors for ExtendedInfoTargetRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ExtendedInfoTargetRecoverPoint { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoTargetRecoverPoint; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ExtendedInfoTargetRecoverPoint = value; } + + /// Internal Acessors for PolicyId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.PolicyId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyId = value; } + + /// Internal Acessors for PolicyName + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.PolicyName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyName = value; } + + /// Internal Acessors for ProgressUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.ProgressUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ProgressUrl; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ProgressUrl = value; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJob()); set { {_property = value;} } } + + /// Internal Acessors for RestoreType + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceInternal.RestoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).RestoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).RestoreType = value; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; } + + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Operation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Operation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Operation = value; } + + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string OperationCategory { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).OperationCategory; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).OperationCategory = value; } + + /// ARM ID of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string PolicyId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyId; } + + /// Name of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string PolicyName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).PolicyName; } + + /// Indicated whether progress is enabled for the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public bool ProgressEnabled { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ProgressEnabled; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ProgressEnabled = value; } + + /// Url which contains job's progress + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ProgressUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).ProgressUrl; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob _property; + + /// AzureBackupJobResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJob()); set => this._property = value; } + + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).RestoreType; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceRecoverPointRecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceRecoverPointRecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? SourceRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceRecoverPointRecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceRecoverPointRecoveryPointTime = value; } + + /// Name of the Datasource's Resource Group + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceResourceGroup { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceResourceGroup; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceResourceGroup = value; } + + /// SubscriptionId corresponding to the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceSubscriptionId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceSubscriptionId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SourceSubscriptionId = value; } + + /// StartTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime StartTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).StartTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).StartTime = value; } + + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Status { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Status; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).Status = value; } + + /// Subscription Id of the corresponding backup vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SubscriptionId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SubscriptionId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SubscriptionId = value; } + + /// List of supported actions + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string[] SupportedAction { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SupportedAction; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).SupportedAction = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TargetRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).TargetRecoverPointRecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).TargetRecoverPointRecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? TargetRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).TargetRecoverPointRecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).TargetRecoverPointRecoveryPointTime = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; } + + /// Name of the vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string VaultName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).VaultName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobInternal)Property).VaultName = value; } + + /// Creates an new instance. + public AzureBackupJobResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResource), __dppResource); + await eventListener.AssertObjectIsValid(nameof(__dppResource), __dppResource); + } + } + /// AzureBackup Job Resource Class + public partial interface IAzureBackupJobResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource + { + /// Job Activity Id + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Job Activity Id", + SerializedName = @"activityID", + PossibleTypes = new [] { typeof(string) })] + string ActivityId { get; set; } + /// Name of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the Backup Instance", + SerializedName = @"backupInstanceFriendlyName", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceFriendlyName { get; set; } + /// ARM ID of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"ARM ID of the Backup Instance", + SerializedName = @"backupInstanceId", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceId { get; } + /// ARM ID of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"ARM ID of the DataSource", + SerializedName = @"dataSourceId", + PossibleTypes = new [] { typeof(string) })] + string DataSourceId { get; set; } + /// Location of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Location of the DataSource", + SerializedName = @"dataSourceLocation", + PossibleTypes = new [] { typeof(string) })] + string DataSourceLocation { get; set; } + /// User Friendly Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"User Friendly Name of the DataSource", + SerializedName = @"dataSourceName", + PossibleTypes = new [] { typeof(string) })] + string DataSourceName { get; set; } + /// Data Source Set Name of the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Data Source Set Name of the DataSource", + SerializedName = @"dataSourceSetName", + PossibleTypes = new [] { typeof(string) })] + string DataSourceSetName { get; set; } + /// Type of DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of DataSource", + SerializedName = @"dataSourceType", + PossibleTypes = new [] { typeof(string) })] + string DataSourceType { get; set; } + /// Total run time of the job. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Total run time of the job.", + SerializedName = @"duration", + PossibleTypes = new [] { typeof(global::System.TimeSpan) })] + global::System.TimeSpan? Duration { get; } + /// EndTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"EndTime of the job(in UTC)", + SerializedName = @"endTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? EndTime { get; } + /// A List, detatiling the errors related to the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"A List, detatiling the errors related to the job", + SerializedName = @"errorDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get; } + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Job's Additional Details", + SerializedName = @"additionalDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get; set; } + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"State of the Backup Instance", + SerializedName = @"backupInstanceState", + PossibleTypes = new [] { typeof(string) })] + string ExtendedInfoBackupInstanceState { get; } + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Number of bytes transfered", + SerializedName = @"dataTransferedInBytes", + PossibleTypes = new [] { typeof(double) })] + double? ExtendedInfoDataTransferedInByte { get; } + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Destination where restore is done", + SerializedName = @"recoveryDestination", + PossibleTypes = new [] { typeof(string) })] + string ExtendedInfoRecoveryDestination { get; } + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"List of Sub Tasks of the job", + SerializedName = @"subTasks", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get; } + /// Indicated that whether the job is adhoc(true) or scheduled(false) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Indicated that whether the job is adhoc(true) or scheduled(false)", + SerializedName = @"isUserTriggered", + PossibleTypes = new [] { typeof(bool) })] + bool IsUserTriggered { get; set; } + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure", + SerializedName = @"operation", + PossibleTypes = new [] { typeof(string) })] + string Operation { get; set; } + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"It indicates the type of Job i.e. Backup/Restore/Retention/Management", + SerializedName = @"operationCategory", + PossibleTypes = new [] { typeof(string) })] + string OperationCategory { get; set; } + /// ARM ID of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"ARM ID of the policy", + SerializedName = @"policyId", + PossibleTypes = new [] { typeof(string) })] + string PolicyId { get; } + /// Name of the policy + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Name of the policy", + SerializedName = @"policyName", + PossibleTypes = new [] { typeof(string) })] + string PolicyName { get; } + /// Indicated whether progress is enabled for the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Indicated whether progress is enabled for the job", + SerializedName = @"progressEnabled", + PossibleTypes = new [] { typeof(bool) })] + bool ProgressEnabled { get; set; } + /// Url which contains job's progress + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Url which contains job's progress", + SerializedName = @"progressUrl", + PossibleTypes = new [] { typeof(string) })] + string ProgressUrl { get; } + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR", + SerializedName = @"restoreType", + PossibleTypes = new [] { typeof(string) })] + string RestoreType { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string SourceRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// Name of the Datasource's Resource Group + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the Datasource's Resource Group", + SerializedName = @"sourceResourceGroup", + PossibleTypes = new [] { typeof(string) })] + string SourceResourceGroup { get; set; } + /// SubscriptionId corresponding to the DataSource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"SubscriptionId corresponding to the DataSource", + SerializedName = @"sourceSubscriptionID", + PossibleTypes = new [] { typeof(string) })] + string SourceSubscriptionId { get; set; } + /// StartTime of the job(in UTC) + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"StartTime of the job(in UTC)", + SerializedName = @"startTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime StartTime { get; set; } + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning", + SerializedName = @"status", + PossibleTypes = new [] { typeof(string) })] + string Status { get; set; } + /// Subscription Id of the corresponding backup vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Subscription Id of the corresponding backup vault", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + string SubscriptionId { get; set; } + /// List of supported actions + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"List of supported actions", + SerializedName = @"supportedActions", + PossibleTypes = new [] { typeof(string) })] + string[] SupportedAction { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string TargetRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + /// Name of the vault + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the vault", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + string VaultName { get; set; } + + } + /// AzureBackup Job Resource Class + internal partial interface IAzureBackupJobResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal + { + /// Job Activity Id + string ActivityId { get; set; } + /// Name of the Backup Instance + string BackupInstanceFriendlyName { get; set; } + /// ARM ID of the Backup Instance + string BackupInstanceId { get; set; } + /// ARM ID of the DataSource + string DataSourceId { get; set; } + /// Location of the DataSource + string DataSourceLocation { get; set; } + /// User Friendly Name of the DataSource + string DataSourceName { get; set; } + /// Data Source Set Name of the DataSource + string DataSourceSetName { get; set; } + /// Type of DataSource + string DataSourceType { get; set; } + /// Total run time of the job. + global::System.TimeSpan? Duration { get; set; } + /// EndTime of the job(in UTC) + global::System.DateTime? EndTime { get; set; } + /// A List, detatiling the errors related to the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] ErrorDetail { get; set; } + /// Extended Information about the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo ExtendedInfo { get; set; } + /// Job's Additional Details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ExtendedInfoAdditionalDetail { get; set; } + /// State of the Backup Instance + string ExtendedInfoBackupInstanceState { get; set; } + /// Number of bytes transfered + double? ExtendedInfoDataTransferedInByte { get; set; } + /// Destination where restore is done + string ExtendedInfoRecoveryDestination { get; set; } + /// Details of the Source Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails ExtendedInfoSourceRecoverPoint { get; set; } + /// List of Sub Tasks of the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] ExtendedInfoSubTask { get; set; } + /// Details of the Target Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails ExtendedInfoTargetRecoverPoint { get; set; } + /// Indicated that whether the job is adhoc(true) or scheduled(false) + bool IsUserTriggered { get; set; } + /// + /// It indicates the type of Job i.e. Backup:full/log/diff ;Restore:ALR/OLR; Retention:Backup/Archive ; Management:ConfigureProtection/UnConfigure + /// + string Operation { get; set; } + /// It indicates the type of Job i.e. Backup/Restore/Retention/Management + string OperationCategory { get; set; } + /// ARM ID of the policy + string PolicyId { get; set; } + /// Name of the policy + string PolicyName { get; set; } + /// Indicated whether progress is enabled for the job + bool ProgressEnabled { get; set; } + /// Url which contains job's progress + string ProgressUrl { get; set; } + /// AzureBackupJobResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJob Property { get; set; } + /// + /// It indicates the sub type of operation i.e. in case of Restore it can be ALR/OLR + /// + string RestoreType { get; set; } + + string SourceRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// Name of the Datasource's Resource Group + string SourceResourceGroup { get; set; } + /// SubscriptionId corresponding to the DataSource + string SourceSubscriptionId { get; set; } + /// StartTime of the job(in UTC) + global::System.DateTime StartTime { get; set; } + /// Status of the job like InProgress/Success/Failed/Cancelled/SuccessWithWarning + string Status { get; set; } + /// Subscription Id of the corresponding backup vault + string SubscriptionId { get; set; } + /// List of supported actions + string[] SupportedAction { get; set; } + + string TargetRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + /// Name of the vault + string VaultName { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.json.cs new file mode 100644 index 000000000000..09b3d61770fa --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResource.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Job Resource Class + public partial class AzureBackupJobResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupJobResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJob.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupJobResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.PowerShell.cs new file mode 100644 index 000000000000..afe10ba41d8a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// List of AzureBackup Job resources + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobResourceListTypeConverter))] + public partial class AzureBackupJobResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupJobResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupJobResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupJobResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupJobResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// List of AzureBackup Job resources + [System.ComponentModel.TypeConverter(typeof(AzureBackupJobResourceListTypeConverter))] + public partial interface IAzureBackupJobResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.TypeConverter.cs new file mode 100644 index 000000000000..ac9e10759cc5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupJobResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupJobResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupJobResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupJobResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.cs new file mode 100644 index 000000000000..41432d4eae4e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of AzureBackup Job resources + public partial class AzureBackupJobResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public AzureBackupJobResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// List of AzureBackup Job resources + public partial interface IAzureBackupJobResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[] Value { get; set; } + + } + /// List of AzureBackup Job resources + internal partial interface IAzureBackupJobResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.json.cs new file mode 100644 index 000000000000..93e79dd33205 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupJobResourceList.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of AzureBackup Job resources + public partial class AzureBackupJobResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupJobResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupJobResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupJobResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.PowerShell.cs new file mode 100644 index 000000000000..e5655d81dc24 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup parameters + [System.ComponentModel.TypeConverter(typeof(AzureBackupParamsTypeConverter))] + public partial class AzureBackupParams + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupParams(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParamsInternal)this).BackupType = (string) content.GetValueForProperty("BackupType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParamsInternal)this).BackupType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupParams(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParamsInternal)this).BackupType = (string) content.GetValueForProperty("BackupType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParamsInternal)this).BackupType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupParams(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupParams(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup parameters + [System.ComponentModel.TypeConverter(typeof(AzureBackupParamsTypeConverter))] + public partial interface IAzureBackupParams + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.TypeConverter.cs new file mode 100644 index 000000000000..adfd30fea2e1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupParamsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupParams.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupParams.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupParams.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.cs new file mode 100644 index 000000000000..0e0709c27590 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.cs @@ -0,0 +1,69 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup parameters + public partial class AzureBackupParams : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParamsInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters __backupParameters = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters(); + + /// Backing field for property. + private string _backupType; + + /// BackupType ; Full/Incremental etc + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupType { get => this._backupType; set => this._backupType = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)__backupParameters).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)__backupParameters).ObjectType = value; } + + /// Creates an new instance. + public AzureBackupParams() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__backupParameters), __backupParameters); + await eventListener.AssertObjectIsValid(nameof(__backupParameters), __backupParameters); + } + } + /// Azure backup parameters + public partial interface IAzureBackupParams : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters + { + /// BackupType ; Full/Incremental etc + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"BackupType ; Full/Incremental etc", + SerializedName = @"backupType", + PossibleTypes = new [] { typeof(string) })] + string BackupType { get; set; } + + } + /// Azure backup parameters + internal partial interface IAzureBackupParamsInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal + { + /// BackupType ; Full/Incremental etc + string BackupType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.json.cs new file mode 100644 index 000000000000..a642512794f5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupParams.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup parameters + public partial class AzureBackupParams + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupParams(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __backupParameters = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters(json); + {_backupType = If( json?.PropertyT("backupType"), out var __jsonBackupType) ? (string)__jsonBackupType : (string)BackupType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupParams FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupParams(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __backupParameters?.ToJson(container, serializationMode); + AddIf( null != (((object)this._backupType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupType.ToString()) : null, "backupType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.PowerShell.cs new file mode 100644 index 000000000000..244df30fc316 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup recoveryPoint + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointTypeConverter))] + public partial class AzureBackupRecoveryPoint + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRecoveryPoint(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRecoveryPoint(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRecoveryPoint(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRecoveryPoint(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup recoveryPoint + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointTypeConverter))] + public partial interface IAzureBackupRecoveryPoint + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.TypeConverter.cs new file mode 100644 index 000000000000..952f818d7b54 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRecoveryPointTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRecoveryPoint.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPoint.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPoint.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.cs new file mode 100644 index 000000000000..0306d5ebd7c6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.cs @@ -0,0 +1,43 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint + public partial class AzureBackupRecoveryPoint : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal + { + + /// Backing field for property. + private string _objectType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public AzureBackupRecoveryPoint() + { + + } + } + /// Azure backup recoveryPoint + public partial interface IAzureBackupRecoveryPoint : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Azure backup recoveryPoint + internal partial interface IAzureBackupRecoveryPointInternal + + { + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.json.cs new file mode 100644 index 000000000000..539bf43fdc70 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPoint.json.cs @@ -0,0 +1,116 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint + public partial class AzureBackupRecoveryPoint + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRecoveryPoint(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint interface + /// is polymorphic, and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "AzureBackupDiscreteRecoveryPoint": + { + return new AzureBackupDiscreteRecoveryPoint(json); + } + } + return new AzureBackupRecoveryPoint(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.PowerShell.cs new file mode 100644 index 000000000000..2dd446f96601 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.PowerShell.cs @@ -0,0 +1,146 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup recoveryPoint based restore request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointBasedRestoreRequestTypeConverter))] + public partial class AzureBackupRecoveryPointBasedRestoreRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRecoveryPointBasedRestoreRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRecoveryPointBasedRestoreRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRecoveryPointBasedRestoreRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRecoveryPointBasedRestoreRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a + /// json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup recoveryPoint based restore request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointBasedRestoreRequestTypeConverter))] + public partial interface IAzureBackupRecoveryPointBasedRestoreRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.TypeConverter.cs new file mode 100644 index 000000000000..6e353a2fdf0c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.TypeConverter.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRecoveryPointBasedRestoreRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRecoveryPointBasedRestoreRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointBasedRestoreRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointBasedRestoreRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.cs new file mode 100644 index 000000000000..3b131b9d4300 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.cs @@ -0,0 +1,90 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint based restore request + public partial class AzureBackupRecoveryPointBasedRestoreRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest __azureBackupRestoreRequest = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest(); + + /// Internal Acessors for RestoreTargetInfoRecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal.RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoRecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoRecoveryOption = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).ObjectType = value; } + + /// Backing field for property. + private string _recoveryPointId; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryPointId { get => this._recoveryPointId; set => this._recoveryPointId = value; } + + /// Gets or sets the restore target information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase RestoreTargetInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfo = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoRecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoRestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoRestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).RestoreTargetInfoRestoreLocation = value; } + + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).SourceDataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRestoreRequest).SourceDataStoreType = value; } + + /// + /// Creates an new instance. + /// + public AzureBackupRecoveryPointBasedRestoreRequest() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__azureBackupRestoreRequest), __azureBackupRestoreRequest); + await eventListener.AssertObjectIsValid(nameof(__azureBackupRestoreRequest), __azureBackupRestoreRequest); + } + } + /// Azure backup recoveryPoint based restore request + public partial interface IAzureBackupRecoveryPointBasedRestoreRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + string RecoveryPointId { get; set; } + + } + /// Azure backup recoveryPoint based restore request + internal partial interface IAzureBackupRecoveryPointBasedRestoreRequestInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal + { + string RecoveryPointId { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.json.cs new file mode 100644 index 000000000000..f6f1f2544b7a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointBasedRestoreRequest.json.cs @@ -0,0 +1,105 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint based restore request + public partial class AzureBackupRecoveryPointBasedRestoreRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRecoveryPointBasedRestoreRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __azureBackupRestoreRequest = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest(json); + {_recoveryPointId = If( json?.PropertyT("recoveryPointId"), out var __jsonRecoveryPointId) ? (string)__jsonRecoveryPointId : (string)RecoveryPointId;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRecoveryPointBasedRestoreRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __azureBackupRestoreRequest?.ToJson(container, serializationMode); + AddIf( null != (((object)this._recoveryPointId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointId.ToString()) : null, "recoveryPointId" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.PowerShell.cs new file mode 100644 index 000000000000..3e927b33f452 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.PowerShell.cs @@ -0,0 +1,141 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup recoveryPoint resource + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointResourceTypeConverter))] + public partial class AzureBackupRecoveryPointResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRecoveryPointResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRecoveryPointResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRecoveryPointResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRecoveryPointResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup recoveryPoint resource + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointResourceTypeConverter))] + public partial interface IAzureBackupRecoveryPointResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.TypeConverter.cs new file mode 100644 index 000000000000..357815be3e93 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRecoveryPointResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRecoveryPointResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.cs new file mode 100644 index 000000000000..999371aee1a1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.cs @@ -0,0 +1,94 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint resource + public partial class AzureBackupRecoveryPointResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(); + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint()); set { {_property = value;} } } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)Property).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointInternal)Property).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint _property; + + /// AzureBackupRecoveryPointResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint()); set => this._property = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; } + + /// Creates an new instance. + public AzureBackupRecoveryPointResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResource), __dppResource); + await eventListener.AssertObjectIsValid(nameof(__dppResource), __dppResource); + } + } + /// Azure backup recoveryPoint resource + public partial interface IAzureBackupRecoveryPointResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Azure backup recoveryPoint resource + internal partial interface IAzureBackupRecoveryPointResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal + { + string ObjectType { get; set; } + /// AzureBackupRecoveryPointResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPoint Property { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.json.cs new file mode 100644 index 000000000000..2004e6e10584 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResource.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint resource + public partial class AzureBackupRecoveryPointResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRecoveryPointResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPoint.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRecoveryPointResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.PowerShell.cs new file mode 100644 index 000000000000..989e6c7f2c8f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup recoveryPoint resource list + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointResourceListTypeConverter))] + public partial class AzureBackupRecoveryPointResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRecoveryPointResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRecoveryPointResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRecoveryPointResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRecoveryPointResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup recoveryPoint resource list + [System.ComponentModel.TypeConverter(typeof(AzureBackupRecoveryPointResourceListTypeConverter))] + public partial interface IAzureBackupRecoveryPointResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.TypeConverter.cs new file mode 100644 index 000000000000..fdcbca5d829c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.TypeConverter.cs @@ -0,0 +1,144 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRecoveryPointResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRecoveryPointResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRecoveryPointResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.cs new file mode 100644 index 000000000000..3963a99ad003 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint resource list + public partial class AzureBackupRecoveryPointResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public AzureBackupRecoveryPointResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// Azure backup recoveryPoint resource list + public partial interface IAzureBackupRecoveryPointResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[] Value { get; set; } + + } + /// Azure backup recoveryPoint resource list + internal partial interface IAzureBackupRecoveryPointResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.json.cs new file mode 100644 index 000000000000..39816bee0dc6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRecoveryPointResourceList.json.cs @@ -0,0 +1,112 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup recoveryPoint resource list + public partial class AzureBackupRecoveryPointResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRecoveryPointResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRecoveryPointResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.PowerShell.cs new file mode 100644 index 000000000000..79ab185ab81e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure Backup Rehydrate Request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRehydrationRequestTypeConverter))] + public partial class AzureBackupRehydrationRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRehydrationRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationPriority = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority?) content.GetValueForProperty("RehydrationPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationPriority, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationRetentionDuration = (string) content.GetValueForProperty("RehydrationRetentionDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationRetentionDuration, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRehydrationRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationPriority = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority?) content.GetValueForProperty("RehydrationPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationPriority, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationRetentionDuration = (string) content.GetValueForProperty("RehydrationRetentionDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal)this).RehydrationRetentionDuration, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRehydrationRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRehydrationRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure Backup Rehydrate Request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRehydrationRequestTypeConverter))] + public partial interface IAzureBackupRehydrationRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.TypeConverter.cs new file mode 100644 index 000000000000..98bd3bb0e06f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRehydrationRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRehydrationRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRehydrationRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRehydrationRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.cs new file mode 100644 index 000000000000..07e215f86744 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.cs @@ -0,0 +1,80 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure Backup Rehydrate Request + public partial class AzureBackupRehydrationRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequestInternal + { + + /// Backing field for property. + private string _recoveryPointId; + + /// Id of the recovery point to be recovered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryPointId { get => this._recoveryPointId; set => this._recoveryPointId = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority? _rehydrationPriority; + + /// Priority to be used for rehydration. Values High or Standard + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority? RehydrationPriority { get => this._rehydrationPriority; set => this._rehydrationPriority = value; } + + /// Backing field for property. + private string _rehydrationRetentionDuration; + + /// Retention duration in ISO 8601 format i.e P10D . + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RehydrationRetentionDuration { get => this._rehydrationRetentionDuration; set => this._rehydrationRetentionDuration = value; } + + /// Creates an new instance. + public AzureBackupRehydrationRequest() + { + + } + } + /// Azure Backup Rehydrate Request + public partial interface IAzureBackupRehydrationRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Id of the recovery point to be recovered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Id of the recovery point to be recovered", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + string RecoveryPointId { get; set; } + /// Priority to be used for rehydration. Values High or Standard + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Priority to be used for rehydration. Values High or Standard", + SerializedName = @"rehydrationPriority", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority? RehydrationPriority { get; set; } + /// Retention duration in ISO 8601 format i.e P10D . + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention duration in ISO 8601 format i.e P10D .", + SerializedName = @"rehydrationRetentionDuration", + PossibleTypes = new [] { typeof(string) })] + string RehydrationRetentionDuration { get; set; } + + } + /// Azure Backup Rehydrate Request + internal partial interface IAzureBackupRehydrationRequestInternal + + { + /// Id of the recovery point to be recovered + string RecoveryPointId { get; set; } + /// Priority to be used for rehydration. Values High or Standard + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority? RehydrationPriority { get; set; } + /// Retention duration in ISO 8601 format i.e P10D . + string RehydrationRetentionDuration { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.json.cs new file mode 100644 index 000000000000..7da6602bca23 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRehydrationRequest.json.cs @@ -0,0 +1,105 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure Backup Rehydrate Request + public partial class AzureBackupRehydrationRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRehydrationRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_recoveryPointId = If( json?.PropertyT("recoveryPointId"), out var __jsonRecoveryPointId) ? (string)__jsonRecoveryPointId : (string)RecoveryPointId;} + {_rehydrationPriority = If( json?.PropertyT("rehydrationPriority"), out var __jsonRehydrationPriority) ? (string)__jsonRehydrationPriority : (string)RehydrationPriority;} + {_rehydrationRetentionDuration = If( json?.PropertyT("rehydrationRetentionDuration"), out var __jsonRehydrationRetentionDuration) ? (string)__jsonRehydrationRetentionDuration : (string)RehydrationRetentionDuration;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRehydrationRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._recoveryPointId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointId.ToString()) : null, "recoveryPointId" ,container.Add ); + AddIf( null != (((object)this._rehydrationPriority)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationPriority.ToString()) : null, "rehydrationPriority" ,container.Add ); + AddIf( null != (((object)this._rehydrationRetentionDuration)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationRetentionDuration.ToString()) : null, "rehydrationRetentionDuration" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.PowerShell.cs new file mode 100644 index 000000000000..3f89201a0341 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup restore request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRestoreRequestTypeConverter))] + public partial class AzureBackupRestoreRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRestoreRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRestoreRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRestoreRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRestoreRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup restore request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRestoreRequestTypeConverter))] + public partial interface IAzureBackupRestoreRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.TypeConverter.cs new file mode 100644 index 000000000000..ebd72bfc2237 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRestoreRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRestoreRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRestoreRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRestoreRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.cs new file mode 100644 index 000000000000..f19ba58203f0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.cs @@ -0,0 +1,117 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup restore request + public partial class AzureBackupRestoreRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal + { + + /// Internal Acessors for RestoreTargetInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal.RestoreTargetInfo { get => (this._restoreTargetInfo = this._restoreTargetInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase()); set { {_restoreTargetInfo = value;} } } + + /// Internal Acessors for RestoreTargetInfoRecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal.RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).RecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).RecoveryOption = value; } + + /// Backing field for property. + private string _objectType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase _restoreTargetInfo; + + /// Gets or sets the restore target information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase RestoreTargetInfo { get => (this._restoreTargetInfo = this._restoreTargetInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase()); set => this._restoreTargetInfo = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).ObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).RecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoRestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).RestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)RestoreTargetInfo).RestoreLocation = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType _sourceDataStoreType; + + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get => this._sourceDataStoreType; set => this._sourceDataStoreType = value; } + + /// Creates an new instance. + public AzureBackupRestoreRequest() + { + + } + } + /// Azure backup restore request + public partial interface IAzureBackupRestoreRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoObjectType { get; set; } + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = true, + Description = @"Recovery Option", + SerializedName = @"recoveryOption", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoRecoveryOption { get; } + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoRestoreLocation { get; set; } + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get; set; } + + } + /// Azure backup restore request + internal partial interface IAzureBackupRestoreRequestInternal + + { + string ObjectType { get; set; } + /// Gets or sets the restore target information. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase RestoreTargetInfo { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string RestoreTargetInfoObjectType { get; set; } + /// Recovery Option + string RestoreTargetInfoRecoveryOption { get; set; } + /// Target Restore region + string RestoreTargetInfoRestoreLocation { get; set; } + /// Gets or sets the type of the source data store. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.json.cs new file mode 100644 index 000000000000..b95f7c04d977 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreRequest.json.cs @@ -0,0 +1,120 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup restore request + public partial class AzureBackupRestoreRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRestoreRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_restoreTargetInfo = If( json?.PropertyT("restoreTargetInfo"), out var __jsonRestoreTargetInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase.FromJson(__jsonRestoreTargetInfo) : RestoreTargetInfo;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + {_sourceDataStoreType = If( json?.PropertyT("sourceDataStoreType"), out var __jsonSourceDataStoreType) ? (string)__jsonSourceDataStoreType : (string)SourceDataStoreType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest interface + /// is polymorphic, and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "AzureBackupRecoveryPointBasedRestoreRequest": + { + return new AzureBackupRecoveryPointBasedRestoreRequest(json); + } + } + return new AzureBackupRestoreRequest(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._restoreTargetInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._restoreTargetInfo.ToJson(null,serializationMode) : null, "restoreTargetInfo" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AddIf( null != (((object)this._sourceDataStoreType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._sourceDataStoreType.ToString()) : null, "sourceDataStoreType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.PowerShell.cs new file mode 100644 index 000000000000..f5b3e043e3ed --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.PowerShell.cs @@ -0,0 +1,150 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// AzureBackup Restore with Rehydration Request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRestoreWithRehydrationRequestTypeConverter))] + public partial class AzureBackupRestoreWithRehydrationRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRestoreWithRehydrationRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationPriority = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) content.GetValueForProperty("RehydrationPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationPriority, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationRetentionDuration = (string) content.GetValueForProperty("RehydrationRetentionDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationRetentionDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRestoreWithRehydrationRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationPriority = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) content.GetValueForProperty("RehydrationPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationPriority, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationRetentionDuration = (string) content.GetValueForProperty("RehydrationRetentionDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal)this).RehydrationRetentionDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).RestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)this).RecoveryPointId, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRestoreWithRehydrationRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRestoreWithRehydrationRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json + /// string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// AzureBackup Restore with Rehydration Request + [System.ComponentModel.TypeConverter(typeof(AzureBackupRestoreWithRehydrationRequestTypeConverter))] + public partial interface IAzureBackupRestoreWithRehydrationRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.TypeConverter.cs new file mode 100644 index 000000000000..818bdf715085 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.TypeConverter.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRestoreWithRehydrationRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRestoreWithRehydrationRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRestoreWithRehydrationRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRestoreWithRehydrationRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.cs new file mode 100644 index 000000000000..40e1d572caff --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Restore with Rehydration Request + public partial class AzureBackupRestoreWithRehydrationRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequestInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest __azureBackupRecoveryPointBasedRestoreRequest = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointBasedRestoreRequest(); + + /// Internal Acessors for RestoreTargetInfoRecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal.RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoRecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoRecoveryOption = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).ObjectType = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RecoveryPointId = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority _rehydrationPriority; + + /// Priority to be used for rehydration. Values High or Standard + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority RehydrationPriority { get => this._rehydrationPriority; set => this._rehydrationPriority = value; } + + /// Backing field for property. + private string _rehydrationRetentionDuration; + + /// Retention duration in ISO 8601 format i.e P10D . + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RehydrationRetentionDuration { get => this._rehydrationRetentionDuration; set => this._rehydrationRetentionDuration = value; } + + /// Gets or sets the restore target information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase RestoreTargetInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfo = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoRecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreTargetInfoRestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoRestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).RestoreTargetInfoRestoreLocation = value; } + + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).SourceDataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)__azureBackupRecoveryPointBasedRestoreRequest).SourceDataStoreType = value; } + + /// + /// Creates an new instance. + /// + public AzureBackupRestoreWithRehydrationRequest() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__azureBackupRecoveryPointBasedRestoreRequest), __azureBackupRecoveryPointBasedRestoreRequest); + await eventListener.AssertObjectIsValid(nameof(__azureBackupRecoveryPointBasedRestoreRequest), __azureBackupRecoveryPointBasedRestoreRequest); + } + } + /// AzureBackup Restore with Rehydration Request + public partial interface IAzureBackupRestoreWithRehydrationRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequest + { + /// Priority to be used for rehydration. Values High or Standard + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Priority to be used for rehydration. Values High or Standard", + SerializedName = @"rehydrationPriority", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority RehydrationPriority { get; set; } + /// Retention duration in ISO 8601 format i.e P10D . + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention duration in ISO 8601 format i.e P10D .", + SerializedName = @"rehydrationRetentionDuration", + PossibleTypes = new [] { typeof(string) })] + string RehydrationRetentionDuration { get; set; } + + } + /// AzureBackup Restore with Rehydration Request + internal partial interface IAzureBackupRestoreWithRehydrationRequestInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointBasedRestoreRequestInternal + { + /// Priority to be used for rehydration. Values High or Standard + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority RehydrationPriority { get; set; } + /// Retention duration in ISO 8601 format i.e P10D . + string RehydrationRetentionDuration { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.json.cs new file mode 100644 index 000000000000..1d8bb3aa1b27 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRestoreWithRehydrationRequest.json.cs @@ -0,0 +1,107 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// AzureBackup Restore with Rehydration Request + public partial class AzureBackupRestoreWithRehydrationRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRestoreWithRehydrationRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __azureBackupRecoveryPointBasedRestoreRequest = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRecoveryPointBasedRestoreRequest(json); + {_rehydrationPriority = If( json?.PropertyT("rehydrationPriority"), out var __jsonRehydrationPriority) ? (string)__jsonRehydrationPriority : (string)RehydrationPriority;} + {_rehydrationRetentionDuration = If( json?.PropertyT("rehydrationRetentionDuration"), out var __jsonRehydrationRetentionDuration) ? (string)__jsonRehydrationRetentionDuration : (string)RehydrationRetentionDuration;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreWithRehydrationRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRestoreWithRehydrationRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __azureBackupRecoveryPointBasedRestoreRequest?.ToJson(container, serializationMode); + AddIf( null != (((object)this._rehydrationPriority)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationPriority.ToString()) : null, "rehydrationPriority" ,container.Add ); + AddIf( null != (((object)this._rehydrationRetentionDuration)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationRetentionDuration.ToString()) : null, "rehydrationRetentionDuration" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.PowerShell.cs new file mode 100644 index 000000000000..231a32ddc059 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.PowerShell.cs @@ -0,0 +1,147 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure backup rule + [System.ComponentModel.TypeConverter(typeof(AzureBackupRuleTypeConverter))] + public partial class AzureBackupRule + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureBackupRule(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters) content.GetValueForProperty("BackupParameter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParametersTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("DataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).Trigger = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext) content.GetValueForProperty("Trigger",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).Trigger, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContextTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameterObjectType = (string) content.GetValueForProperty("BackupParameterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreObjectType = (string) content.GetValueForProperty("DataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).TriggerObjectType = (string) content.GetValueForProperty("TriggerObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).TriggerObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureBackupRule(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters) content.GetValueForProperty("BackupParameter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParametersTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("DataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).Trigger = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext) content.GetValueForProperty("Trigger",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).Trigger, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContextTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameterObjectType = (string) content.GetValueForProperty("BackupParameterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).BackupParameterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreObjectType = (string) content.GetValueForProperty("DataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).DataStoreObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).TriggerObjectType = (string) content.GetValueForProperty("TriggerObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal)this).TriggerObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureBackupRule(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureBackupRule(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure backup rule + [System.ComponentModel.TypeConverter(typeof(AzureBackupRuleTypeConverter))] + public partial interface IAzureBackupRule + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.TypeConverter.cs new file mode 100644 index 000000000000..ad84f1363008 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureBackupRuleTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureBackupRule.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureBackupRule.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureBackupRule.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.cs new file mode 100644 index 000000000000..1eb51bce851f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.cs @@ -0,0 +1,146 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup rule + public partial class AzureBackupRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule __basePolicyRule = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule(); + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters _backupParameter; + + /// BackupParameters base + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters BackupParameter { get => (this._backupParameter = this._backupParameter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters()); set => this._backupParameter = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string BackupParameterObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)BackupParameter).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)BackupParameter).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase _dataStore; + + /// DataStoreInfo base + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DataStore { get => (this._dataStore = this._dataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set => this._dataStore = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataStoreObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).ObjectType = value; } + + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).DataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).DataStoreType = value; } + + /// Internal Acessors for BackupParameter + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal.BackupParameter { get => (this._backupParameter = this._backupParameter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters()); set { {_backupParameter = value;} } } + + /// Internal Acessors for DataStore + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal.DataStore { get => (this._dataStore = this._dataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set { {_dataStore = value;} } } + + /// Internal Acessors for Trigger + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRuleInternal.Trigger { get => (this._trigger = this._trigger ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext()); set { {_trigger = value;} } } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).Name = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext _trigger; + + /// Trigger context + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext Trigger { get => (this._trigger = this._trigger ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext()); set => this._trigger = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TriggerObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)Trigger).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)Trigger).ObjectType = value; } + + /// Creates an new instance. + public AzureBackupRule() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__basePolicyRule), __basePolicyRule); + await eventListener.AssertObjectIsValid(nameof(__basePolicyRule), __basePolicyRule); + } + } + /// Azure backup rule + public partial interface IAzureBackupRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string BackupParameterObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string DataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"type of datastore; SnapShot/Hot/Archive", + SerializedName = @"dataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string TriggerObjectType { get; set; } + + } + /// Azure backup rule + internal partial interface IAzureBackupRuleInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal + { + /// BackupParameters base + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters BackupParameter { get; set; } + /// Type of the specific object - used for deserializing + string BackupParameterObjectType { get; set; } + /// DataStoreInfo base + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DataStore { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string DataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + /// Trigger context + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext Trigger { get; set; } + /// Type of the specific object - used for deserializing + string TriggerObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.json.cs new file mode 100644 index 000000000000..af5d527c011b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureBackupRule.json.cs @@ -0,0 +1,107 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure backup rule + public partial class AzureBackupRule + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureBackupRule(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __basePolicyRule = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule(json); + {_backupParameter = If( json?.PropertyT("backupParameters"), out var __jsonBackupParameters) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupParameters.FromJson(__jsonBackupParameters) : BackupParameter;} + {_dataStore = If( json?.PropertyT("dataStore"), out var __jsonDataStore) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase.FromJson(__jsonDataStore) : DataStore;} + {_trigger = If( json?.PropertyT("trigger"), out var __jsonTrigger) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext.FromJson(__jsonTrigger) : Trigger;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureBackupRule(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __basePolicyRule?.ToJson(container, serializationMode); + AddIf( null != this._backupParameter ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._backupParameter.ToJson(null,serializationMode) : null, "backupParameters" ,container.Add ); + AddIf( null != this._dataStore ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._dataStore.ToJson(null,serializationMode) : null, "dataStore" ,container.Add ); + AddIf( null != this._trigger ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._trigger.ToJson(null,serializationMode) : null, "trigger" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.PowerShell.cs new file mode 100644 index 000000000000..388c0dcf1f4d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Azure retention rule + [System.ComponentModel.TypeConverter(typeof(AzureRetentionRuleTypeConverter))] + public partial class AzureRetentionRule + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal AzureRetentionRule(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).IsDefault = (bool?) content.GetValueForProperty("IsDefault",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).IsDefault, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).Lifecycle = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[]) content.GetValueForProperty("Lifecycle",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).Lifecycle, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.SourceLifeCycleTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal AzureRetentionRule(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).IsDefault = (bool?) content.GetValueForProperty("IsDefault",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).IsDefault, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).Lifecycle = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[]) content.GetValueForProperty("Lifecycle",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal)this).Lifecycle, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.SourceLifeCycleTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new AzureRetentionRule(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new AzureRetentionRule(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Azure retention rule + [System.ComponentModel.TypeConverter(typeof(AzureRetentionRuleTypeConverter))] + public partial interface IAzureRetentionRule + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.TypeConverter.cs new file mode 100644 index 000000000000..ba83252415e3 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class AzureRetentionRuleTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AzureRetentionRule.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return AzureRetentionRule.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return AzureRetentionRule.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.cs new file mode 100644 index 000000000000..f3ee33530096 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.cs @@ -0,0 +1,84 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure retention rule + public partial class AzureRetentionRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRuleInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule __basePolicyRule = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule(); + + /// Backing field for property. + private bool? _isDefault; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? IsDefault { get => this._isDefault; set => this._isDefault = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[] _lifecycle; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[] Lifecycle { get => this._lifecycle; set => this._lifecycle = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).Name = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)__basePolicyRule).ObjectType = value; } + + /// Creates an new instance. + public AzureRetentionRule() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__basePolicyRule), __basePolicyRule); + await eventListener.AssertObjectIsValid(nameof(__basePolicyRule), __basePolicyRule); + } + } + /// Azure retention rule + public partial interface IAzureRetentionRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"isDefault", + PossibleTypes = new [] { typeof(bool) })] + bool? IsDefault { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"lifecycles", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[] Lifecycle { get; set; } + + } + /// Azure retention rule + internal partial interface IAzureRetentionRuleInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal + { + bool? IsDefault { get; set; } + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle[] Lifecycle { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.json.cs new file mode 100644 index 000000000000..1e8a4fd8353d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/AzureRetentionRule.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Azure retention rule + public partial class AzureRetentionRule + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal AzureRetentionRule(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __basePolicyRule = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule(json); + {_isDefault = If( json?.PropertyT("isDefault"), out var __jsonIsDefault) ? (bool?)__jsonIsDefault : IsDefault;} + {_lifecycle = If( json?.PropertyT("lifecycles"), out var __jsonLifecycles) ? If( __jsonLifecycles as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.SourceLifeCycle.FromJson(__u) )) ))() : null : Lifecycle;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AzureRetentionRule(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __basePolicyRule?.ToJson(container, serializationMode); + AddIf( null != this._isDefault ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._isDefault) : null, "isDefault" ,container.Add ); + if (null != this._lifecycle) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._lifecycle ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("lifecycles",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.PowerShell.cs new file mode 100644 index 000000000000..a9883e22118c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BackupCriteria base class + [System.ComponentModel.TypeConverter(typeof(BackupCriteriaTypeConverter))] + public partial class BackupCriteria + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupCriteria(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupCriteria(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupCriteria(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupCriteria(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BackupCriteria base class + [System.ComponentModel.TypeConverter(typeof(BackupCriteriaTypeConverter))] + public partial interface IBackupCriteria + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.TypeConverter.cs new file mode 100644 index 000000000000..727e2a469764 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupCriteriaTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupCriteria.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupCriteria.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupCriteria.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.cs new file mode 100644 index 000000000000..523e0802e7a9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupCriteria base class + public partial class BackupCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal + { + + /// Backing field for property. + private string _objectType; + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public BackupCriteria() + { + + } + } + /// BackupCriteria base class + public partial interface IBackupCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// BackupCriteria base class + internal partial interface IBackupCriteriaInternal + + { + /// Type of the specific object - used for deserializing + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.json.cs new file mode 100644 index 000000000000..0666a6df04bc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupCriteria.json.cs @@ -0,0 +1,116 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupCriteria base class + public partial class BackupCriteria + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupCriteria(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "ScheduleBasedBackupCriteria": + { + return new ScheduleBasedBackupCriteria(json); + } + } + return new BackupCriteria(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.PowerShell.cs new file mode 100644 index 000000000000..668488837141 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.PowerShell.cs @@ -0,0 +1,141 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Backup instance + [System.ComponentModel.TypeConverter(typeof(BackupInstanceTypeConverter))] + public partial class BackupInstance + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstance(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource) content.GetValueForProperty("DataSourceInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceSetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet) content.GetValueForProperty("DataSourceSetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceSetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSetTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).PolicyInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo) content.GetValueForProperty("PolicyInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).PolicyInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProtectionStatus = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails) content.GetValueForProperty("ProtectionStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProtectionStatus, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProvisioningState = (string) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProvisioningState, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstance(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource) content.GetValueForProperty("DataSourceInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceSetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet) content.GetValueForProperty("DataSourceSetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).DataSourceSetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSetTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).PolicyInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo) content.GetValueForProperty("PolicyInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).PolicyInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProtectionStatus = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails) content.GetValueForProperty("ProtectionStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProtectionStatus, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProvisioningState = (string) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal)this).ProvisioningState, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstance(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstance(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Backup instance + [System.ComponentModel.TypeConverter(typeof(BackupInstanceTypeConverter))] + public partial interface IBackupInstance + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.TypeConverter.cs new file mode 100644 index 000000000000..66ed2e49ba74 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstanceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstance.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstance.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstance.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.cs new file mode 100644 index 000000000000..9488fb4c6935 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup instance + public partial class BackupInstance : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource _dataSourceInfo; + + /// Gets or sets the data source information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DataSourceInfo { get => (this._dataSourceInfo = this._dataSourceInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource()); set => this._dataSourceInfo = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet _dataSourceSetInfo; + + /// Gets or sets the data source set information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DataSourceSetInfo { get => (this._dataSourceSetInfo = this._dataSourceSetInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet()); set => this._dataSourceSetInfo = value; } + + /// Internal Acessors for ProtectionStatus + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal.ProtectionStatus { get => (this._protectionStatus = this._protectionStatus ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetails()); set { {_protectionStatus = value;} } } + + /// Internal Acessors for ProvisioningState + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceInternal.ProvisioningState { get => this._provisioningState; set { {_provisioningState = value;} } } + + /// Backing field for property. + private string _objectType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo _policyInfo; + + /// Gets or sets the policy information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo PolicyInfo { get => (this._policyInfo = this._policyInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfo()); set => this._policyInfo = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails _protectionStatus; + + /// Specifies the protection status of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails ProtectionStatus { get => (this._protectionStatus = this._protectionStatus ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetails()); } + + /// Backing field for property. + private string _provisioningState; + + /// + /// Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ProvisioningState { get => this._provisioningState; } + + /// Creates an new instance. + public BackupInstance() + { + + } + } + /// Backup instance + public partial interface IBackupInstance : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Gets or sets the data source information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the data source information.", + SerializedName = @"dataSourceInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DataSourceInfo { get; set; } + /// Gets or sets the data source set information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets the data source set information.", + SerializedName = @"dataSourceSetInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DataSourceSetInfo { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// Gets or sets the policy information. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the policy information.", + SerializedName = @"policyInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo PolicyInfo { get; set; } + /// Specifies the protection status of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Specifies the protection status of the resource", + SerializedName = @"protectionStatus", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails ProtectionStatus { get; } + /// + /// Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed", + SerializedName = @"provisioningState", + PossibleTypes = new [] { typeof(string) })] + string ProvisioningState { get; } + + } + /// Backup instance + internal partial interface IBackupInstanceInternal + + { + /// Gets or sets the data source information. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DataSourceInfo { get; set; } + /// Gets or sets the data source set information. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DataSourceSetInfo { get; set; } + + string ObjectType { get; set; } + /// Gets or sets the policy information. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo PolicyInfo { get; set; } + /// Specifies the protection status of the resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails ProtectionStatus { get; set; } + /// + /// Specifies the provisioning state of the resource i.e. provisioning/updating/Succeeded/Failed + /// + string ProvisioningState { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.json.cs new file mode 100644 index 000000000000..dedce55279cb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstance.json.cs @@ -0,0 +1,117 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup instance + public partial class BackupInstance + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstance(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_dataSourceInfo = If( json?.PropertyT("dataSourceInfo"), out var __jsonDataSourceInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource.FromJson(__jsonDataSourceInfo) : DataSourceInfo;} + {_dataSourceSetInfo = If( json?.PropertyT("dataSourceSetInfo"), out var __jsonDataSourceSetInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet.FromJson(__jsonDataSourceSetInfo) : DataSourceSetInfo;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + {_policyInfo = If( json?.PropertyT("policyInfo"), out var __jsonPolicyInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PolicyInfo.FromJson(__jsonPolicyInfo) : PolicyInfo;} + {_protectionStatus = If( json?.PropertyT("protectionStatus"), out var __jsonProtectionStatus) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ProtectionStatusDetails.FromJson(__jsonProtectionStatus) : ProtectionStatus;} + {_provisioningState = If( json?.PropertyT("provisioningState"), out var __jsonProvisioningState) ? (string)__jsonProvisioningState : (string)ProvisioningState;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstance(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._dataSourceInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._dataSourceInfo.ToJson(null,serializationMode) : null, "dataSourceInfo" ,container.Add ); + AddIf( null != this._dataSourceSetInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._dataSourceSetInfo.ToJson(null,serializationMode) : null, "dataSourceSetInfo" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AddIf( null != this._policyInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._policyInfo.ToJson(null,serializationMode) : null, "policyInfo" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._protectionStatus ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._protectionStatus.ToJson(null,serializationMode) : null, "protectionStatus" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._provisioningState)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._provisioningState.ToString()) : null, "provisioningState" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.PowerShell.cs new file mode 100644 index 000000000000..c4df0c66a512 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BackupInstance Resource + [System.ComponentModel.TypeConverter(typeof(BackupInstanceResourceTypeConverter))] + public partial class BackupInstanceResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstanceResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstanceResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstanceResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstanceResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BackupInstance Resource + [System.ComponentModel.TypeConverter(typeof(BackupInstanceResourceTypeConverter))] + public partial interface IBackupInstanceResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.TypeConverter.cs new file mode 100644 index 000000000000..cbeed6c8d214 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstanceResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstanceResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstanceResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstanceResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.cs new file mode 100644 index 000000000000..b92f3f987dba --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.cs @@ -0,0 +1,88 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupInstance Resource + public partial class BackupInstanceResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(); + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance _property; + + /// BackupInstanceResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance()); set => this._property = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; } + + /// Creates an new instance. + public BackupInstanceResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResource), __dppResource); + await eventListener.AssertObjectIsValid(nameof(__dppResource), __dppResource); + } + } + /// BackupInstance Resource + public partial interface IBackupInstanceResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource + { + /// BackupInstanceResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"BackupInstanceResource properties", + SerializedName = @"properties", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance Property { get; set; } + + } + /// BackupInstance Resource + internal partial interface IBackupInstanceResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal + { + /// BackupInstanceResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance Property { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.json.cs new file mode 100644 index 000000000000..16d13cb49b11 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResource.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupInstance Resource + public partial class BackupInstanceResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstanceResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstanceResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.PowerShell.cs new file mode 100644 index 000000000000..9fb3daafe45b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BackupInstance Resource list response + [System.ComponentModel.TypeConverter(typeof(BackupInstanceResourceListTypeConverter))] + public partial class BackupInstanceResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstanceResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstanceResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstanceResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstanceResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BackupInstance Resource list response + [System.ComponentModel.TypeConverter(typeof(BackupInstanceResourceListTypeConverter))] + public partial interface IBackupInstanceResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.TypeConverter.cs new file mode 100644 index 000000000000..b47cf0d0089e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstanceResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstanceResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstanceResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstanceResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.cs new file mode 100644 index 000000000000..57c0eff24982 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupInstance Resource list response + public partial class BackupInstanceResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public BackupInstanceResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// BackupInstance Resource list response + public partial interface IBackupInstanceResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[] Value { get; set; } + + } + /// BackupInstance Resource list response + internal partial interface IBackupInstanceResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.json.cs new file mode 100644 index 000000000000..e659bfce0d5a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupInstanceResourceList.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupInstance Resource list response + public partial class BackupInstanceResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstanceResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstanceResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.PowerShell.cs new file mode 100644 index 000000000000..b28d14d63f11 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BackupParameters base + [System.ComponentModel.TypeConverter(typeof(BackupParametersTypeConverter))] + public partial class BackupParameters + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupParameters(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupParameters(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupParameters(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupParameters(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BackupParameters base + [System.ComponentModel.TypeConverter(typeof(BackupParametersTypeConverter))] + public partial interface IBackupParameters + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.TypeConverter.cs new file mode 100644 index 000000000000..95208c402f2f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupParametersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupParameters.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupParameters.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupParameters.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.cs new file mode 100644 index 000000000000..56e887eca940 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupParameters base + public partial class BackupParameters : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParametersInternal + { + + /// Backing field for property. + private string _objectType; + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public BackupParameters() + { + + } + } + /// BackupParameters base + public partial interface IBackupParameters : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// BackupParameters base + internal partial interface IBackupParametersInternal + + { + /// Type of the specific object - used for deserializing + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.json.cs new file mode 100644 index 000000000000..fd5f5ed74c15 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupParameters.json.cs @@ -0,0 +1,116 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupParameters base + public partial class BackupParameters + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupParameters(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupParameters FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "AzureBackupParams": + { + return new AzureBackupParams(json); + } + } + return new BackupParameters(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.PowerShell.cs new file mode 100644 index 000000000000..067790c2a477 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Rule based backup policy + [System.ComponentModel.TypeConverter(typeof(BackupPolicyTypeConverter))] + public partial class BackupPolicy + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupPolicy(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicyInternal)this).PolicyRule = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[]) content.GetValueForProperty("PolicyRule",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicyInternal)this).PolicyRule, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRuleTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupPolicy(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicyInternal)this).PolicyRule = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[]) content.GetValueForProperty("PolicyRule",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicyInternal)this).PolicyRule, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRuleTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupPolicy(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupPolicy(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Rule based backup policy + [System.ComponentModel.TypeConverter(typeof(BackupPolicyTypeConverter))] + public partial interface IBackupPolicy + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.TypeConverter.cs new file mode 100644 index 000000000000..c942708c626b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupPolicyTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupPolicy.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupPolicy.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupPolicy.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.cs new file mode 100644 index 000000000000..345928670f17 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.cs @@ -0,0 +1,78 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Rule based backup policy + public partial class BackupPolicy : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicyInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy __baseBackupPolicy = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy(); + + /// Type of datasource for the backup management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string[] DatasourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)__baseBackupPolicy).DatasourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)__baseBackupPolicy).DatasourceType = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)__baseBackupPolicy).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)__baseBackupPolicy).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[] _policyRule; + + /// + /// Policy rule dictionary that contains rules for each backptype i.e Full/Incremental/Logs etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[] PolicyRule { get => this._policyRule; set => this._policyRule = value; } + + /// Creates an new instance. + public BackupPolicy() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__baseBackupPolicy), __baseBackupPolicy); + await eventListener.AssertObjectIsValid(nameof(__baseBackupPolicy), __baseBackupPolicy); + } + } + /// Rule based backup policy + public partial interface IBackupPolicy : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy + { + /// + /// Policy rule dictionary that contains rules for each backptype i.e Full/Incremental/Logs etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Policy rule dictionary that contains rules for each backptype i.e Full/Incremental/Logs etc", + SerializedName = @"policyRules", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule),typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRule),typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureRetentionRule) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[] PolicyRule { get; set; } + + } + /// Rule based backup policy + internal partial interface IBackupPolicyInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal + { + /// + /// Policy rule dictionary that contains rules for each backptype i.e Full/Incremental/Logs etc + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule[] PolicyRule { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.json.cs new file mode 100644 index 000000000000..32f69f157a39 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupPolicy.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Rule based backup policy + public partial class BackupPolicy + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupPolicy(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __baseBackupPolicy = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy(json); + {_policyRule = If( json?.PropertyT("policyRules"), out var __jsonPolicyRules) ? If( __jsonPolicyRules as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BasePolicyRule.FromJson(__u) )) ))() : null : PolicyRule;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupPolicy FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupPolicy(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __baseBackupPolicy?.ToJson(container, serializationMode); + if (null != this._policyRule) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._policyRule ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("policyRules",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.PowerShell.cs new file mode 100644 index 000000000000..44aef4acb40f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Schedule for backup + [System.ComponentModel.TypeConverter(typeof(BackupScheduleTypeConverter))] + public partial class BackupSchedule + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupSchedule(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)this).RepeatingTimeInterval = (string[]) content.GetValueForProperty("RepeatingTimeInterval",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)this).RepeatingTimeInterval, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupSchedule(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)this).RepeatingTimeInterval = (string[]) content.GetValueForProperty("RepeatingTimeInterval",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)this).RepeatingTimeInterval, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupSchedule(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupSchedule(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Schedule for backup + [System.ComponentModel.TypeConverter(typeof(BackupScheduleTypeConverter))] + public partial interface IBackupSchedule + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.TypeConverter.cs new file mode 100644 index 000000000000..5df7eec20bba --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupScheduleTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupSchedule.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupSchedule.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupSchedule.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.cs new file mode 100644 index 000000000000..105bf01ad4e6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule for backup + public partial class BackupSchedule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal + { + + /// Backing field for property. + private string[] _repeatingTimeInterval; + + /// ISO 8601 repeating time interval format + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string[] RepeatingTimeInterval { get => this._repeatingTimeInterval; set => this._repeatingTimeInterval = value; } + + /// Creates an new instance. + public BackupSchedule() + { + + } + } + /// Schedule for backup + public partial interface IBackupSchedule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// ISO 8601 repeating time interval format + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"ISO 8601 repeating time interval format", + SerializedName = @"repeatingTimeIntervals", + PossibleTypes = new [] { typeof(string) })] + string[] RepeatingTimeInterval { get; set; } + + } + /// Schedule for backup + internal partial interface IBackupScheduleInternal + + { + /// ISO 8601 repeating time interval format + string[] RepeatingTimeInterval { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.json.cs new file mode 100644 index 000000000000..ce15e3276f99 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupSchedule.json.cs @@ -0,0 +1,109 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule for backup + public partial class BackupSchedule + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupSchedule(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_repeatingTimeInterval = If( json?.PropertyT("repeatingTimeIntervals"), out var __jsonRepeatingTimeIntervals) ? If( __jsonRepeatingTimeIntervals as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(string) (__u is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __t ? (string)(__t.ToString()) : null)) ))() : null : RepeatingTimeInterval;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupSchedule(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (null != this._repeatingTimeInterval) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._repeatingTimeInterval ) + { + AddIf(null != (((object)__x)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__x.ToString()) : null ,__w.Add); + } + container.Add("repeatingTimeIntervals",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.PowerShell.cs new file mode 100644 index 000000000000..a1172b200ca2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Backup Vault + [System.ComponentModel.TypeConverter(typeof(BackupVaultTypeConverter))] + public partial class BackupVault + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupVault(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).StorageSetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]) content.GetValueForProperty("StorageSetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).StorageSetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSettingTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupVault(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).StorageSetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]) content.GetValueForProperty("StorageSetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)this).StorageSetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSettingTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupVault(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupVault(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Backup Vault + [System.ComponentModel.TypeConverter(typeof(BackupVaultTypeConverter))] + public partial interface IBackupVault + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.TypeConverter.cs new file mode 100644 index 000000000000..b0c9c4cda83c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupVaultTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupVault.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupVault.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupVault.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.cs new file mode 100644 index 000000000000..6a1dc56a1fc1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.cs @@ -0,0 +1,66 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup Vault + public partial class BackupVault : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal + { + + /// Internal Acessors for ProvisioningState + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal.ProvisioningState { get => this._provisioningState; set { {_provisioningState = value;} } } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? _provisioningState; + + /// Provisioning state of the BackupVault resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get => this._provisioningState; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] _storageSetting; + + /// Storage Settings + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get => this._storageSetting; set => this._storageSetting = value; } + + /// Creates an new instance. + public BackupVault() + { + + } + } + /// Backup Vault + public partial interface IBackupVault : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Provisioning state of the BackupVault resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Provisioning state of the BackupVault resource", + SerializedName = @"provisioningState", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; } + /// Storage Settings + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Storage Settings", + SerializedName = @"storageSettings", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get; set; } + + } + /// Backup Vault + internal partial interface IBackupVaultInternal + + { + /// Provisioning state of the BackupVault resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; set; } + /// Storage Settings + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.json.cs new file mode 100644 index 000000000000..992e76d034a4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVault.json.cs @@ -0,0 +1,114 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup Vault + public partial class BackupVault + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupVault(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_provisioningState = If( json?.PropertyT("provisioningState"), out var __jsonProvisioningState) ? (string)__jsonProvisioningState : (string)ProvisioningState;} + {_storageSetting = If( json?.PropertyT("storageSettings"), out var __jsonStorageSettings) ? If( __jsonStorageSettings as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSetting.FromJson(__u) )) ))() : null : StorageSetting;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupVault(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._provisioningState)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._provisioningState.ToString()) : null, "provisioningState" ,container.Add ); + } + if (null != this._storageSetting) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._storageSetting ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("storageSettings",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.PowerShell.cs new file mode 100644 index 000000000000..8391e1505f3e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.PowerShell.cs @@ -0,0 +1,159 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Backup Vault Resource + [System.ComponentModel.TypeConverter(typeof(BackupVaultResourceTypeConverter))] + public partial class BackupVaultResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupVaultResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).StorageSetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]) content.GetValueForProperty("StorageSetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).StorageSetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSettingTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupVaultResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).StorageSetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[]) content.GetValueForProperty("StorageSetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal)this).StorageSetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.StorageSettingTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupVaultResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupVaultResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Backup Vault Resource + [System.ComponentModel.TypeConverter(typeof(BackupVaultResourceTypeConverter))] + public partial interface IBackupVaultResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.TypeConverter.cs new file mode 100644 index 000000000000..e528d1e3d51e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupVaultResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupVaultResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupVaultResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupVaultResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.cs new file mode 100644 index 000000000000..d32efcfef32a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.cs @@ -0,0 +1,160 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup Vault Resource + public partial class BackupVaultResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource __dppTrackedResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource(); + + /// Optional ETag. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).ETag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).ETag = value; } + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id; } + + /// Input Managed Identity Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Identity; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Identity = value; } + + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId; } + + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId; } + + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityType = value; } + + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl; } + + /// Resource location. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Location { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Location; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Location = value; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVault()); set { {_property = value;} } } + + /// Internal Acessors for ProvisioningState + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceInternal.ProvisioningState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)Property).ProvisioningState; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)Property).ProvisioningState = value; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id = value; } + + /// Internal Acessors for IdentityPrincipalId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId = value; } + + /// Internal Acessors for IdentityTenantId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId = value; } + + /// Internal Acessors for IdentityUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault _property; + + /// BackupVaultResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVault()); set => this._property = value; } + + /// Provisioning state of the BackupVault resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)Property).ProvisioningState; } + + /// Storage Settings + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)Property).StorageSetting; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultInternal)Property).StorageSetting = value; } + + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Tag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Tag = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type; } + + /// Creates an new instance. + public BackupVaultResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppTrackedResource), __dppTrackedResource); + await eventListener.AssertObjectIsValid(nameof(__dppTrackedResource), __dppTrackedResource); + } + } + /// Backup Vault Resource + public partial interface IBackupVaultResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource + { + /// Provisioning state of the BackupVault resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Provisioning state of the BackupVault resource", + SerializedName = @"provisioningState", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; } + /// Storage Settings + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Storage Settings", + SerializedName = @"storageSettings", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get; set; } + + } + /// Backup Vault Resource + internal partial interface IBackupVaultResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal + { + /// BackupVaultResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVault Property { get; set; } + /// Provisioning state of the BackupVault resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; set; } + /// Storage Settings + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.json.cs new file mode 100644 index 000000000000..9f34da3b839e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResource.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Backup Vault Resource + public partial class BackupVaultResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupVaultResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppTrackedResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVault.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupVaultResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppTrackedResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.PowerShell.cs new file mode 100644 index 000000000000..3cac80a41ef4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// List of BackupVault resources + [System.ComponentModel.TypeConverter(typeof(BackupVaultResourceListTypeConverter))] + public partial class BackupVaultResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupVaultResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupVaultResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupVaultResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupVaultResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// List of BackupVault resources + [System.ComponentModel.TypeConverter(typeof(BackupVaultResourceListTypeConverter))] + public partial interface IBackupVaultResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.TypeConverter.cs new file mode 100644 index 000000000000..5caeecbc25cd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupVaultResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupVaultResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupVaultResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupVaultResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.cs new file mode 100644 index 000000000000..2f88f921ce0a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of BackupVault resources + public partial class BackupVaultResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public BackupVaultResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// List of BackupVault resources + public partial interface IBackupVaultResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[] Value { get; set; } + + } + /// List of BackupVault resources + internal partial interface IBackupVaultResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.json.cs new file mode 100644 index 000000000000..d3a774c243b4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BackupVaultResourceList.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of BackupVault resources + public partial class BackupVaultResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupVaultResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupVaultResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.PowerShell.cs new file mode 100644 index 000000000000..ce9d19eecaa2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BackupPolicy base + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyTypeConverter))] + public partial class BaseBackupPolicy + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BaseBackupPolicy(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BaseBackupPolicy(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BaseBackupPolicy(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BaseBackupPolicy(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BackupPolicy base + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyTypeConverter))] + public partial interface IBaseBackupPolicy + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.TypeConverter.cs new file mode 100644 index 000000000000..f2c084755d3e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BaseBackupPolicyTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BaseBackupPolicy.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BaseBackupPolicy.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BaseBackupPolicy.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.cs new file mode 100644 index 000000000000..3dc3099f5c01 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.cs @@ -0,0 +1,62 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupPolicy base + public partial class BaseBackupPolicy : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal + { + + /// Backing field for property. + private string[] _datasourceType; + + /// Type of datasource for the backup management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string[] DatasourceType { get => this._datasourceType; set => this._datasourceType = value; } + + /// Backing field for property. + private string _objectType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public BaseBackupPolicy() + { + + } + } + /// BackupPolicy base + public partial interface IBaseBackupPolicy : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of datasource for the backup management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of datasource for the backup management", + SerializedName = @"datasourceTypes", + PossibleTypes = new [] { typeof(string) })] + string[] DatasourceType { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// BackupPolicy base + internal partial interface IBaseBackupPolicyInternal + + { + /// Type of datasource for the backup management + string[] DatasourceType { get; set; } + + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.json.cs new file mode 100644 index 000000000000..33852b554aa0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicy.json.cs @@ -0,0 +1,126 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BackupPolicy base + public partial class BaseBackupPolicy + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BaseBackupPolicy(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_datasourceType = If( json?.PropertyT("datasourceTypes"), out var __jsonDatasourceTypes) ? If( __jsonDatasourceTypes as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(string) (__u is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __t ? (string)(__t.ToString()) : null)) ))() : null : DatasourceType;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "BackupPolicy": + { + return new BackupPolicy(json); + } + } + return new BaseBackupPolicy(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (null != this._datasourceType) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._datasourceType ) + { + AddIf(null != (((object)__x)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__x.ToString()) : null ,__w.Add); + } + container.Add("datasourceTypes",__w); + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.PowerShell.cs new file mode 100644 index 000000000000..6cb7712c6164 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BaseBackupPolicy resource + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyResourceTypeConverter))] + public partial class BaseBackupPolicyResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BaseBackupPolicyResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BaseBackupPolicyResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).DatasourceType = (string[]) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).DatasourceType, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BaseBackupPolicyResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BaseBackupPolicyResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BaseBackupPolicy resource + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyResourceTypeConverter))] + public partial interface IBaseBackupPolicyResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.TypeConverter.cs new file mode 100644 index 000000000000..df91e3867e9f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BaseBackupPolicyResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BaseBackupPolicyResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BaseBackupPolicyResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BaseBackupPolicyResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.cs new file mode 100644 index 000000000000..d9f04c4fa25b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.cs @@ -0,0 +1,110 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BaseBackupPolicy resource + public partial class BaseBackupPolicyResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(); + + /// Type of datasource for the backup management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string[] DatasourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)Property).DatasourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)Property).DatasourceType = value; } + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy()); set { {_property = value;} } } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Id = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Name; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)Property).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyInternal)Property).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy _property; + + /// BaseBackupPolicyResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy()); set => this._property = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)__dppResource).Type; } + + /// Creates an new instance. + public BaseBackupPolicyResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResource), __dppResource); + await eventListener.AssertObjectIsValid(nameof(__dppResource), __dppResource); + } + } + /// BaseBackupPolicy resource + public partial interface IBaseBackupPolicyResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource + { + /// Type of datasource for the backup management + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of datasource for the backup management", + SerializedName = @"datasourceTypes", + PossibleTypes = new [] { typeof(string) })] + string[] DatasourceType { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// BaseBackupPolicy resource + internal partial interface IBaseBackupPolicyResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal + { + /// Type of datasource for the backup management + string[] DatasourceType { get; set; } + + string ObjectType { get; set; } + /// BaseBackupPolicyResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicy Property { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.json.cs new file mode 100644 index 000000000000..af537c9d4350 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResource.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BaseBackupPolicy resource + public partial class BaseBackupPolicyResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BaseBackupPolicyResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicy.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BaseBackupPolicyResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.PowerShell.cs new file mode 100644 index 000000000000..9807402ad5c9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// List of BaseBackupPolicy resources + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyResourceListTypeConverter))] + public partial class BaseBackupPolicyResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BaseBackupPolicyResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BaseBackupPolicyResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BaseBackupPolicyResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BaseBackupPolicyResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// List of BaseBackupPolicy resources + [System.ComponentModel.TypeConverter(typeof(BaseBackupPolicyResourceListTypeConverter))] + public partial interface IBaseBackupPolicyResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.TypeConverter.cs new file mode 100644 index 000000000000..90a0cbb6acdd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BaseBackupPolicyResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BaseBackupPolicyResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BaseBackupPolicyResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BaseBackupPolicyResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.cs new file mode 100644 index 000000000000..d07865d9923a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of BaseBackupPolicy resources + public partial class BaseBackupPolicyResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public BaseBackupPolicyResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// List of BaseBackupPolicy resources + public partial interface IBaseBackupPolicyResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[] Value { get; set; } + + } + /// List of BaseBackupPolicy resources + internal partial interface IBaseBackupPolicyResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.json.cs new file mode 100644 index 000000000000..d0bc561c3f48 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BaseBackupPolicyResourceList.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of BaseBackupPolicy resources + public partial class BaseBackupPolicyResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BaseBackupPolicyResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BaseBackupPolicyResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.PowerShell.cs new file mode 100644 index 000000000000..d5136cefd71c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// BasePolicy Rule + [System.ComponentModel.TypeConverter(typeof(BasePolicyRuleTypeConverter))] + public partial class BasePolicyRule + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BasePolicyRule(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BasePolicyRule(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BasePolicyRule(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BasePolicyRule(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// BasePolicy Rule + [System.ComponentModel.TypeConverter(typeof(BasePolicyRuleTypeConverter))] + public partial interface IBasePolicyRule + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.TypeConverter.cs new file mode 100644 index 000000000000..74247d8a58e6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BasePolicyRuleTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BasePolicyRule.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BasePolicyRule.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BasePolicyRule.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.cs new file mode 100644 index 000000000000..5208e2dbb3b6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.cs @@ -0,0 +1,59 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BasePolicy Rule + public partial class BasePolicyRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRuleInternal + { + + /// Backing field for property. + private string _name; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; set => this._name = value; } + + /// Backing field for property. + private string _objectType; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public BasePolicyRule() + { + + } + } + /// BasePolicy Rule + public partial interface IBasePolicyRule : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// BasePolicy Rule + internal partial interface IBasePolicyRuleInternal + + { + string Name { get; set; } + + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.json.cs new file mode 100644 index 000000000000..e91893d78a95 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/BasePolicyRule.json.cs @@ -0,0 +1,122 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// BasePolicy Rule + public partial class BasePolicyRule + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BasePolicyRule(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBasePolicyRule FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "AzureBackupRule": + { + return new AzureBackupRule(json); + } + case "AzureRetentionRule": + { + return new AzureRetentionRule(json); + } + } + return new BasePolicyRule(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.PowerShell.cs new file mode 100644 index 000000000000..2e319bd20624 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// CheckNameAvailability Request + [System.ComponentModel.TypeConverter(typeof(CheckNameAvailabilityRequestTypeConverter))] + public partial class CheckNameAvailabilityRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CheckNameAvailabilityRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Type, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CheckNameAvailabilityRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal)this).Type, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CheckNameAvailabilityRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CheckNameAvailabilityRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// CheckNameAvailability Request + [System.ComponentModel.TypeConverter(typeof(CheckNameAvailabilityRequestTypeConverter))] + public partial interface ICheckNameAvailabilityRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.TypeConverter.cs new file mode 100644 index 000000000000..9c1871bb54be --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CheckNameAvailabilityRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CheckNameAvailabilityRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CheckNameAvailabilityRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CheckNameAvailabilityRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.cs new file mode 100644 index 000000000000..ca0ab1156c6e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// CheckNameAvailability Request + public partial class CheckNameAvailabilityRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequestInternal + { + + /// Backing field for property. + private string _name; + + /// Resource name for which availability needs to be checked + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; set => this._name = value; } + + /// Backing field for property. + private string _type; + + /// Describes the Resource type: Microsoft.DataProtection/BackupVaults + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; set => this._type = value; } + + /// Creates an new instance. + public CheckNameAvailabilityRequest() + { + + } + } + /// CheckNameAvailability Request + public partial interface ICheckNameAvailabilityRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Resource name for which availability needs to be checked + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource name for which availability needs to be checked", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; set; } + /// Describes the Resource type: Microsoft.DataProtection/BackupVaults + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Describes the Resource type: Microsoft.DataProtection/BackupVaults", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; set; } + + } + /// CheckNameAvailability Request + internal partial interface ICheckNameAvailabilityRequestInternal + + { + /// Resource name for which availability needs to be checked + string Name { get; set; } + /// Describes the Resource type: Microsoft.DataProtection/BackupVaults + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.json.cs new file mode 100644 index 000000000000..0d9ab1d80235 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityRequest.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// CheckNameAvailability Request + public partial class CheckNameAvailabilityRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CheckNameAvailabilityRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new CheckNameAvailabilityRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.PowerShell.cs new file mode 100644 index 000000000000..810277832caa --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// CheckNameAvailability Result + [System.ComponentModel.TypeConverter(typeof(CheckNameAvailabilityResultTypeConverter))] + public partial class CheckNameAvailabilityResult + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CheckNameAvailabilityResult(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).NameAvailable = (bool?) content.GetValueForProperty("NameAvailable",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).NameAvailable, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Reason = (string) content.GetValueForProperty("Reason",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Reason, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CheckNameAvailabilityResult(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).NameAvailable = (bool?) content.GetValueForProperty("NameAvailable",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).NameAvailable, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Reason = (string) content.GetValueForProperty("Reason",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal)this).Reason, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CheckNameAvailabilityResult(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CheckNameAvailabilityResult(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// CheckNameAvailability Result + [System.ComponentModel.TypeConverter(typeof(CheckNameAvailabilityResultTypeConverter))] + public partial interface ICheckNameAvailabilityResult + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.TypeConverter.cs new file mode 100644 index 000000000000..56c588347636 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CheckNameAvailabilityResultTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CheckNameAvailabilityResult.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CheckNameAvailabilityResult.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CheckNameAvailabilityResult.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.cs new file mode 100644 index 000000000000..8ac498578654 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.cs @@ -0,0 +1,80 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// CheckNameAvailability Result + public partial class CheckNameAvailabilityResult : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResultInternal + { + + /// Backing field for property. + private string _message; + + /// Gets or sets the message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Message { get => this._message; set => this._message = value; } + + /// Backing field for property. + private bool? _nameAvailable; + + /// Gets or sets a value indicating whether [name available]. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? NameAvailable { get => this._nameAvailable; set => this._nameAvailable = value; } + + /// Backing field for property. + private string _reason; + + /// Gets or sets the reason. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Reason { get => this._reason; set => this._reason = value; } + + /// Creates an new instance. + public CheckNameAvailabilityResult() + { + + } + } + /// CheckNameAvailability Result + public partial interface ICheckNameAvailabilityResult : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Gets or sets the message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets the message.", + SerializedName = @"message", + PossibleTypes = new [] { typeof(string) })] + string Message { get; set; } + /// Gets or sets a value indicating whether [name available]. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets a value indicating whether [name available].", + SerializedName = @"nameAvailable", + PossibleTypes = new [] { typeof(bool) })] + bool? NameAvailable { get; set; } + /// Gets or sets the reason. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets the reason.", + SerializedName = @"reason", + PossibleTypes = new [] { typeof(string) })] + string Reason { get; set; } + + } + /// CheckNameAvailability Result + internal partial interface ICheckNameAvailabilityResultInternal + + { + /// Gets or sets the message. + string Message { get; set; } + /// Gets or sets a value indicating whether [name available]. + bool? NameAvailable { get; set; } + /// Gets or sets the reason. + string Reason { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.json.cs new file mode 100644 index 000000000000..59cdf6a047c1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CheckNameAvailabilityResult.json.cs @@ -0,0 +1,105 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// CheckNameAvailability Result + public partial class CheckNameAvailabilityResult + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CheckNameAvailabilityResult(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_message = If( json?.PropertyT("message"), out var __jsonMessage) ? (string)__jsonMessage : (string)Message;} + {_nameAvailable = If( json?.PropertyT("nameAvailable"), out var __jsonNameAvailable) ? (bool?)__jsonNameAvailable : NameAvailable;} + {_reason = If( json?.PropertyT("reason"), out var __jsonReason) ? (string)__jsonReason : (string)Reason;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new CheckNameAvailabilityResult(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._message)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._message.ToString()) : null, "message" ,container.Add ); + AddIf( null != this._nameAvailable ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._nameAvailable) : null, "nameAvailable" ,container.Add ); + AddIf( null != (((object)this._reason)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._reason.ToString()) : null, "reason" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.PowerShell.cs new file mode 100644 index 000000000000..72d35964ddab --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Localized display information of an operation. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryDisplayTypeConverter))] + public partial class ClientDiscoveryDisplay + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryDisplay(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Description = (string) content.GetValueForProperty("Description",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Description, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Provider = (string) content.GetValueForProperty("Provider",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Provider, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Resource = (string) content.GetValueForProperty("Resource",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Resource, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryDisplay(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Description = (string) content.GetValueForProperty("Description",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Description, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Operation = (string) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Operation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Provider = (string) content.GetValueForProperty("Provider",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Provider, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Resource = (string) content.GetValueForProperty("Resource",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)this).Resource, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryDisplay(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryDisplay(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Localized display information of an operation. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryDisplayTypeConverter))] + public partial interface IClientDiscoveryDisplay + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.TypeConverter.cs new file mode 100644 index 000000000000..3dc8bfad15f0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryDisplayTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryDisplay.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryDisplay.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryDisplay.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.cs new file mode 100644 index 000000000000..d2256c72467d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.cs @@ -0,0 +1,97 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Localized display information of an operation. + public partial class ClientDiscoveryDisplay : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal + { + + /// Backing field for property. + private string _description; + + /// Description of the operation having details of what operation is about. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Description { get => this._description; set => this._description = value; } + + /// Backing field for property. + private string _operation; + + /// Operations Name itself. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Operation { get => this._operation; set => this._operation = value; } + + /// Backing field for property. + private string _provider; + + /// Name of the provider for display purposes + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Provider { get => this._provider; set => this._provider = value; } + + /// Backing field for property. + private string _resource; + + /// ResourceType for which this Operation can be performed. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Resource { get => this._resource; set => this._resource = value; } + + /// Creates an new instance. + public ClientDiscoveryDisplay() + { + + } + } + /// Localized display information of an operation. + public partial interface IClientDiscoveryDisplay : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Description of the operation having details of what operation is about. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Description of the operation having details of what operation is about.", + SerializedName = @"description", + PossibleTypes = new [] { typeof(string) })] + string Description { get; set; } + /// Operations Name itself. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Operations Name itself.", + SerializedName = @"operation", + PossibleTypes = new [] { typeof(string) })] + string Operation { get; set; } + /// Name of the provider for display purposes + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Name of the provider for display purposes", + SerializedName = @"provider", + PossibleTypes = new [] { typeof(string) })] + string Provider { get; set; } + /// ResourceType for which this Operation can be performed. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"ResourceType for which this Operation can be performed.", + SerializedName = @"resource", + PossibleTypes = new [] { typeof(string) })] + string Resource { get; set; } + + } + /// Localized display information of an operation. + internal partial interface IClientDiscoveryDisplayInternal + + { + /// Description of the operation having details of what operation is about. + string Description { get; set; } + /// Operations Name itself. + string Operation { get; set; } + /// Name of the provider for display purposes + string Provider { get; set; } + /// ResourceType for which this Operation can be performed. + string Resource { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.json.cs new file mode 100644 index 000000000000..76c9f33b6fc9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryDisplay.json.cs @@ -0,0 +1,107 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Localized display information of an operation. + public partial class ClientDiscoveryDisplay + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryDisplay(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_description = If( json?.PropertyT("description"), out var __jsonDescription) ? (string)__jsonDescription : (string)Description;} + {_operation = If( json?.PropertyT("operation"), out var __jsonOperation) ? (string)__jsonOperation : (string)Operation;} + {_provider = If( json?.PropertyT("provider"), out var __jsonProvider) ? (string)__jsonProvider : (string)Provider;} + {_resource = If( json?.PropertyT("resource"), out var __jsonResource) ? (string)__jsonResource : (string)Resource;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryDisplay(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._description)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._description.ToString()) : null, "description" ,container.Add ); + AddIf( null != (((object)this._operation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._operation.ToString()) : null, "operation" ,container.Add ); + AddIf( null != (((object)this._provider)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._provider.ToString()) : null, "provider" ,container.Add ); + AddIf( null != (((object)this._resource)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resource.ToString()) : null, "resource" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.PowerShell.cs new file mode 100644 index 000000000000..6e04bd140100 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Class to represent shoebox log specification in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForLogSpecificationTypeConverter))] + public partial class ClientDiscoveryForLogSpecification + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryForLogSpecification(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).BlobDuration = (string) content.GetValueForProperty("BlobDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).BlobDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).DisplayName = (string) content.GetValueForProperty("DisplayName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).DisplayName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryForLogSpecification(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).BlobDuration = (string) content.GetValueForProperty("BlobDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).BlobDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).DisplayName = (string) content.GetValueForProperty("DisplayName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal)this).DisplayName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryForLogSpecification(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryForLogSpecification(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class to represent shoebox log specification in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForLogSpecificationTypeConverter))] + public partial interface IClientDiscoveryForLogSpecification + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.TypeConverter.cs new file mode 100644 index 000000000000..d82b4699daf5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.TypeConverter.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryForLogSpecificationTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryForLogSpecification.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryForLogSpecification.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryForLogSpecification.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.cs new file mode 100644 index 000000000000..0c52c76f2e57 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.cs @@ -0,0 +1,80 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox log specification in json client discovery. + public partial class ClientDiscoveryForLogSpecification : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecificationInternal + { + + /// Backing field for property. + private string _blobDuration; + + /// blob duration of shoebox log specification + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BlobDuration { get => this._blobDuration; set => this._blobDuration = value; } + + /// Backing field for property. + private string _displayName; + + /// Localized display name + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DisplayName { get => this._displayName; set => this._displayName = value; } + + /// Backing field for property. + private string _name; + + /// Name for shoebox log specification. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; set => this._name = value; } + + /// Creates an new instance. + public ClientDiscoveryForLogSpecification() + { + + } + } + /// Class to represent shoebox log specification in json client discovery. + public partial interface IClientDiscoveryForLogSpecification : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// blob duration of shoebox log specification + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"blob duration of shoebox log specification", + SerializedName = @"blobDuration", + PossibleTypes = new [] { typeof(string) })] + string BlobDuration { get; set; } + /// Localized display name + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Localized display name", + SerializedName = @"displayName", + PossibleTypes = new [] { typeof(string) })] + string DisplayName { get; set; } + /// Name for shoebox log specification. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Name for shoebox log specification.", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; set; } + + } + /// Class to represent shoebox log specification in json client discovery. + internal partial interface IClientDiscoveryForLogSpecificationInternal + + { + /// blob duration of shoebox log specification + string BlobDuration { get; set; } + /// Localized display name + string DisplayName { get; set; } + /// Name for shoebox log specification. + string Name { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.json.cs new file mode 100644 index 000000000000..47ecba722574 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForLogSpecification.json.cs @@ -0,0 +1,106 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox log specification in json client discovery. + public partial class ClientDiscoveryForLogSpecification + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryForLogSpecification(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_blobDuration = If( json?.PropertyT("blobDuration"), out var __jsonBlobDuration) ? (string)__jsonBlobDuration : (string)BlobDuration;} + {_displayName = If( json?.PropertyT("displayName"), out var __jsonDisplayName) ? (string)__jsonDisplayName : (string)DisplayName;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryForLogSpecification(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + AddIf( null != (((object)this._blobDuration)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._blobDuration.ToString()) : null, "blobDuration" ,container.Add ); + AddIf( null != (((object)this._displayName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._displayName.ToString()) : null, "displayName" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.PowerShell.cs new file mode 100644 index 000000000000..988be46f6ea9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Class to represent shoebox properties in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForPropertiesTypeConverter))] + public partial class ClientDiscoveryForProperties + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryForProperties(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification) content.GetValueForProperty("ServiceSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecification, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecificationTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecificationLogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("ServiceSpecificationLogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecificationLogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryForProperties(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification) content.GetValueForProperty("ServiceSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecification, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecificationTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecificationLogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("ServiceSpecificationLogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)this).ServiceSpecificationLogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryForProperties(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryForProperties(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class to represent shoebox properties in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForPropertiesTypeConverter))] + public partial interface IClientDiscoveryForProperties + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.TypeConverter.cs new file mode 100644 index 000000000000..2046ba1d573e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryForPropertiesTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryForProperties.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryForProperties.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryForProperties.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.cs new file mode 100644 index 000000000000..7ae197d97f34 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.cs @@ -0,0 +1,55 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox properties in json client discovery. + public partial class ClientDiscoveryForProperties : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal + { + + /// Internal Acessors for ServiceSpecification + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal.ServiceSpecification { get => (this._serviceSpecification = this._serviceSpecification ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecification()); set { {_serviceSpecification = value;} } } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification _serviceSpecification; + + /// Operation properties. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification ServiceSpecification { get => (this._serviceSpecification = this._serviceSpecification ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecification()); set => this._serviceSpecification = value; } + + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)ServiceSpecification).LogSpecification; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)ServiceSpecification).LogSpecification = value; } + + /// Creates an new instance. + public ClientDiscoveryForProperties() + { + + } + } + /// Class to represent shoebox properties in json client discovery. + public partial interface IClientDiscoveryForProperties : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of log specifications of this operation.", + SerializedName = @"logSpecifications", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get; set; } + + } + /// Class to represent shoebox properties in json client discovery. + internal partial interface IClientDiscoveryForPropertiesInternal + + { + /// Operation properties. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification ServiceSpecification { get; set; } + /// List of log specifications of this operation. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.json.cs new file mode 100644 index 000000000000..ed9ed065d878 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForProperties.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox properties in json client discovery. + public partial class ClientDiscoveryForProperties + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryForProperties(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_serviceSpecification = If( json?.PropertyT("serviceSpecification"), out var __jsonServiceSpecification) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecification.FromJson(__jsonServiceSpecification) : ServiceSpecification;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryForProperties(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._serviceSpecification ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._serviceSpecification.ToJson(null,serializationMode) : null, "serviceSpecification" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.PowerShell.cs new file mode 100644 index 000000000000..6b415acace73 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.PowerShell.cs @@ -0,0 +1,134 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Class to represent shoebox service specification in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForServiceSpecificationTypeConverter))] + public partial class ClientDiscoveryForServiceSpecification + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryForServiceSpecification(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)this).LogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("LogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)this).LogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryForServiceSpecification(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)this).LogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("LogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal)this).LogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryForServiceSpecification(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryForServiceSpecification(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json + /// string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class to represent shoebox service specification in json client discovery. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryForServiceSpecificationTypeConverter))] + public partial interface IClientDiscoveryForServiceSpecification + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.TypeConverter.cs new file mode 100644 index 000000000000..7deb34ca6706 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.TypeConverter.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryForServiceSpecificationTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryForServiceSpecification.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryForServiceSpecification.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryForServiceSpecification.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.cs new file mode 100644 index 000000000000..6a3fea4e5c35 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox service specification in json client discovery. + public partial class ClientDiscoveryForServiceSpecification : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecificationInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] _logSpecification; + + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] LogSpecification { get => this._logSpecification; set => this._logSpecification = value; } + + /// Creates an new instance. + public ClientDiscoveryForServiceSpecification() + { + + } + } + /// Class to represent shoebox service specification in json client discovery. + public partial interface IClientDiscoveryForServiceSpecification : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of log specifications of this operation.", + SerializedName = @"logSpecifications", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] LogSpecification { get; set; } + + } + /// Class to represent shoebox service specification in json client discovery. + internal partial interface IClientDiscoveryForServiceSpecificationInternal + + { + /// List of log specifications of this operation. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] LogSpecification { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.json.cs new file mode 100644 index 000000000000..0a1e17ea8a7b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryForServiceSpecification.json.cs @@ -0,0 +1,110 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class to represent shoebox service specification in json client discovery. + public partial class ClientDiscoveryForServiceSpecification + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryForServiceSpecification(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_logSpecification = If( json?.PropertyT("logSpecifications"), out var __jsonLogSpecifications) ? If( __jsonLogSpecifications as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecification.FromJson(__u) )) ))() : null : LogSpecification;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryForServiceSpecification(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (null != this._logSpecification) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._logSpecification ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("logSpecifications",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.PowerShell.cs new file mode 100644 index 000000000000..1cf6f8865353 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Operations List response which contains list of available APIs. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryResponseTypeConverter))] + public partial class ClientDiscoveryResponse + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryResponse(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).NextLink, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryValueForSingleApiTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryResponse(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).NextLink, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryValueForSingleApiTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryResponse(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryResponse(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Operations List response which contains list of available APIs. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryResponseTypeConverter))] + public partial interface IClientDiscoveryResponse + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.TypeConverter.cs new file mode 100644 index 000000000000..3deb3dad8e6f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryResponseTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryResponse.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryResponse.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryResponse.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.cs new file mode 100644 index 000000000000..d86eb451a41f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operations List response which contains list of available APIs. + public partial class ClientDiscoveryResponse : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponseInternal + { + + /// Backing field for property. + private string _nextLink; + + /// Link to the next chunk of Response. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string NextLink { get => this._nextLink; set => this._nextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[] _value; + + /// List of available operations. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public ClientDiscoveryResponse() + { + + } + } + /// Operations List response which contains list of available APIs. + public partial interface IClientDiscoveryResponse : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Link to the next chunk of Response. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Link to the next chunk of Response.", + SerializedName = @"nextLink", + PossibleTypes = new [] { typeof(string) })] + string NextLink { get; set; } + /// List of available operations. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of available operations.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[] Value { get; set; } + + } + /// Operations List response which contains list of available APIs. + internal partial interface IClientDiscoveryResponseInternal + + { + /// Link to the next chunk of Response. + string NextLink { get; set; } + /// List of available operations. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.json.cs new file mode 100644 index 000000000000..2c3f82a5d257 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryResponse.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operations List response which contains list of available APIs. + public partial class ClientDiscoveryResponse + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryResponse(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_nextLink = If( json?.PropertyT("nextLink"), out var __jsonNextLink) ? (string)__jsonNextLink : (string)NextLink;} + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryValueForSingleApi.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryResponse FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryResponse(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._nextLink)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._nextLink.ToString()) : null, "nextLink" ,container.Add ); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.PowerShell.cs new file mode 100644 index 000000000000..5baaa2c2e371 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.PowerShell.cs @@ -0,0 +1,151 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Available operation details. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryValueForSingleApiTypeConverter))] + public partial class ClientDiscoveryValueForSingleApi + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ClientDiscoveryValueForSingleApi(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Display = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay) content.GetValueForProperty("Display",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Display, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplayTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForPropertiesTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Origin = (string) content.GetValueForProperty("Origin",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Origin, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayDescription = (string) content.GetValueForProperty("DisplayDescription",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayDescription, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayOperation = (string) content.GetValueForProperty("DisplayOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayProvider = (string) content.GetValueForProperty("DisplayProvider",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayProvider, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayResource = (string) content.GetValueForProperty("DisplayResource",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayResource, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification) content.GetValueForProperty("ServiceSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecification, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecificationTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecificationLogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("ServiceSpecificationLogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecificationLogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ClientDiscoveryValueForSingleApi(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Display = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay) content.GetValueForProperty("Display",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Display, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplayTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForPropertiesTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Origin = (string) content.GetValueForProperty("Origin",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).Origin, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayDescription = (string) content.GetValueForProperty("DisplayDescription",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayDescription, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayOperation = (string) content.GetValueForProperty("DisplayOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayProvider = (string) content.GetValueForProperty("DisplayProvider",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayProvider, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayResource = (string) content.GetValueForProperty("DisplayResource",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).DisplayResource, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification) content.GetValueForProperty("ServiceSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecification, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForServiceSpecificationTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecificationLogSpecification = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[]) content.GetValueForProperty("ServiceSpecificationLogSpecification",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal)this).ServiceSpecificationLogSpecification, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForLogSpecificationTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ClientDiscoveryValueForSingleApi(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ClientDiscoveryValueForSingleApi(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Available operation details. + [System.ComponentModel.TypeConverter(typeof(ClientDiscoveryValueForSingleApiTypeConverter))] + public partial interface IClientDiscoveryValueForSingleApi + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.TypeConverter.cs new file mode 100644 index 000000000000..758b88ea51fc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ClientDiscoveryValueForSingleApiTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ClientDiscoveryValueForSingleApi.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ClientDiscoveryValueForSingleApi.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ClientDiscoveryValueForSingleApi.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.cs new file mode 100644 index 000000000000..4d571a5bf961 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.cs @@ -0,0 +1,168 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Available operation details. + public partial class ClientDiscoveryValueForSingleApi : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay _display; + + /// Contains the localized display information for this particular operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay Display { get => (this._display = this._display ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplay()); set => this._display = value; } + + /// Description of the operation having details of what operation is about. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DisplayDescription { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Description; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Description = value; } + + /// Operations Name itself. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DisplayOperation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Operation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Operation = value; } + + /// Name of the provider for display purposes + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DisplayProvider { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Provider; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Provider = value; } + + /// ResourceType for which this Operation can be performed. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DisplayResource { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Resource; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplayInternal)Display).Resource = value; } + + /// Internal Acessors for Display + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal.Display { get => (this._display = this._display ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplay()); set { {_display = value;} } } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForProperties()); set { {_property = value;} } } + + /// Internal Acessors for ServiceSpecification + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApiInternal.ServiceSpecification { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)Property).ServiceSpecification; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)Property).ServiceSpecification = value; } + + /// Backing field for property. + private string _name; + + /// Name of the Operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; set => this._name = value; } + + /// Backing field for property. + private string _origin; + + /// + /// The intended executor of the operation;governs the display of the operation in the RBAC UX and the audit logs UX + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Origin { get => this._origin; set => this._origin = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties _property; + + /// Properties for the given operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForProperties()); set => this._property = value; } + + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)Property).ServiceSpecificationLogSpecification; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForPropertiesInternal)Property).ServiceSpecificationLogSpecification = value; } + + /// Creates an new instance. + public ClientDiscoveryValueForSingleApi() + { + + } + } + /// Available operation details. + public partial interface IClientDiscoveryValueForSingleApi : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Description of the operation having details of what operation is about. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Description of the operation having details of what operation is about.", + SerializedName = @"description", + PossibleTypes = new [] { typeof(string) })] + string DisplayDescription { get; set; } + /// Operations Name itself. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Operations Name itself.", + SerializedName = @"operation", + PossibleTypes = new [] { typeof(string) })] + string DisplayOperation { get; set; } + /// Name of the provider for display purposes + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Name of the provider for display purposes", + SerializedName = @"provider", + PossibleTypes = new [] { typeof(string) })] + string DisplayProvider { get; set; } + /// ResourceType for which this Operation can be performed. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"ResourceType for which this Operation can be performed.", + SerializedName = @"resource", + PossibleTypes = new [] { typeof(string) })] + string DisplayResource { get; set; } + /// Name of the Operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Name of the Operation.", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; set; } + /// + /// The intended executor of the operation;governs the display of the operation in the RBAC UX and the audit logs UX + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The intended executor of the operation;governs the display of the operation in the RBAC UX and the audit logs UX", + SerializedName = @"origin", + PossibleTypes = new [] { typeof(string) })] + string Origin { get; set; } + /// List of log specifications of this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of log specifications of this operation.", + SerializedName = @"logSpecifications", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get; set; } + + } + /// Available operation details. + internal partial interface IClientDiscoveryValueForSingleApiInternal + + { + /// Contains the localized display information for this particular operation + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryDisplay Display { get; set; } + /// Description of the operation having details of what operation is about. + string DisplayDescription { get; set; } + /// Operations Name itself. + string DisplayOperation { get; set; } + /// Name of the provider for display purposes + string DisplayProvider { get; set; } + /// ResourceType for which this Operation can be performed. + string DisplayResource { get; set; } + /// Name of the Operation. + string Name { get; set; } + /// + /// The intended executor of the operation;governs the display of the operation in the RBAC UX and the audit logs UX + /// + string Origin { get; set; } + /// Properties for the given operation. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForProperties Property { get; set; } + /// Operation properties. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForServiceSpecification ServiceSpecification { get; set; } + /// List of log specifications of this operation. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryForLogSpecification[] ServiceSpecificationLogSpecification { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.json.cs new file mode 100644 index 000000000000..3d01d1533b20 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ClientDiscoveryValueForSingleApi.json.cs @@ -0,0 +1,107 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Available operation details. + public partial class ClientDiscoveryValueForSingleApi + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ClientDiscoveryValueForSingleApi(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_display = If( json?.PropertyT("display"), out var __jsonDisplay) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryDisplay.FromJson(__jsonDisplay) : Display;} + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ClientDiscoveryForProperties.FromJson(__jsonProperties) : Property;} + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_origin = If( json?.PropertyT("origin"), out var __jsonOrigin) ? (string)__jsonOrigin : (string)Origin;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ClientDiscoveryValueForSingleApi(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._display ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._display.ToJson(null,serializationMode) : null, "display" ,container.Add ); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + AddIf( null != (((object)this._origin)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._origin.ToString()) : null, "origin" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.PowerShell.cs new file mode 100644 index 000000000000..6a8131e3c5de --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.PowerShell.cs @@ -0,0 +1,141 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// An error response from Azure Backuup. + [System.ComponentModel.TypeConverter(typeof(CloudErrorTypeConverter))] + public partial class CloudError + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CloudError(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Error = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) content.GetValueForProperty("Error",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Error, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CloudError(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Error = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) content.GetValueForProperty("Error",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Error, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CloudError(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CloudError(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// An error response from Azure Backuup. + [System.ComponentModel.TypeConverter(typeof(CloudErrorTypeConverter))] + public partial interface ICloudError + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.TypeConverter.cs new file mode 100644 index 000000000000..fc5b848c3b87 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CloudErrorTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CloudError.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CloudError.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CloudError.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.cs new file mode 100644 index 000000000000..2b4326821edc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.cs @@ -0,0 +1,126 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// An error response from Azure Backuup. + public partial class CloudError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal + { + + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo; } + + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Code { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code; } + + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError _error; + + /// The resource management error response. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Error { get => (this._error = this._error ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error()); set => this._error = value; } + + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Message { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message; } + + /// Internal Acessors for AdditionalInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.AdditionalInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo = value; } + + /// Internal Acessors for Code + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.Code { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code = value; } + + /// Internal Acessors for Detail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.Detail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail = value; } + + /// Internal Acessors for Error + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.Error { get => (this._error = this._error ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error()); set { {_error = value;} } } + + /// Internal Acessors for Message + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.Message { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message = value; } + + /// Internal Acessors for Target + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudErrorInternal.Target { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target = value; } + + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Target { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target; } + + /// Creates an new instance. + public CloudError() + { + + } + } + /// An error response from Azure Backuup. + public partial interface ICloudError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error additional info.", + SerializedName = @"additionalInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; } + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error code.", + SerializedName = @"code", + PossibleTypes = new [] { typeof(string) })] + string Code { get; } + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error details.", + SerializedName = @"details", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; } + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error message.", + SerializedName = @"message", + PossibleTypes = new [] { typeof(string) })] + string Message { get; } + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error target.", + SerializedName = @"target", + PossibleTypes = new [] { typeof(string) })] + string Target { get; } + + } + /// An error response from Azure Backuup. + internal partial interface ICloudErrorInternal + + { + /// The error additional info. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; set; } + /// The error code. + string Code { get; set; } + /// The error details. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; set; } + /// The resource management error response. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Error { get; set; } + /// The error message. + string Message { get; set; } + /// The error target. + string Target { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.json.cs new file mode 100644 index 000000000000..ebe6f6e119b5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CloudError.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// An error response from Azure Backuup. + public partial class CloudError + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CloudError(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_error = If( json?.PropertyT("error"), out var __jsonError) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error.FromJson(__jsonError) : Error;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICloudError FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new CloudError(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._error ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._error.ToJson(null,serializationMode) : null, "error" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.PowerShell.cs new file mode 100644 index 000000000000..1cb3b427dc7b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Copy on Expiry Option + [System.ComponentModel.TypeConverter(typeof(CopyOnExpiryOptionTypeConverter))] + public partial class CopyOnExpiryOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CopyOnExpiryOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CopyOnExpiryOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CopyOnExpiryOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CopyOnExpiryOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Copy on Expiry Option + [System.ComponentModel.TypeConverter(typeof(CopyOnExpiryOptionTypeConverter))] + public partial interface ICopyOnExpiryOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.TypeConverter.cs new file mode 100644 index 000000000000..a34cd8eee2af --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CopyOnExpiryOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CopyOnExpiryOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CopyOnExpiryOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CopyOnExpiryOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.cs new file mode 100644 index 000000000000..418730d8927c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.cs @@ -0,0 +1,52 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Copy on Expiry Option + public partial class CopyOnExpiryOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOptionInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(); + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType = value; } + + /// Creates an new instance. + public CopyOnExpiryOption() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__copyOption), __copyOption); + await eventListener.AssertObjectIsValid(nameof(__copyOption), __copyOption); + } + } + /// Copy on Expiry Option + public partial interface ICopyOnExpiryOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption + { + + } + /// Copy on Expiry Option + internal partial interface ICopyOnExpiryOptionInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.json.cs new file mode 100644 index 000000000000..a34282074771 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOnExpiryOption.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Copy on Expiry Option + public partial class CopyOnExpiryOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CopyOnExpiryOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(json); + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOnExpiryOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new CopyOnExpiryOption(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __copyOption?.ToJson(container, serializationMode); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.PowerShell.cs new file mode 100644 index 000000000000..a80933db72b8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Options to copy + [System.ComponentModel.TypeConverter(typeof(CopyOptionTypeConverter))] + public partial class CopyOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CopyOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CopyOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CopyOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CopyOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Options to copy + [System.ComponentModel.TypeConverter(typeof(CopyOptionTypeConverter))] + public partial interface ICopyOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.TypeConverter.cs new file mode 100644 index 000000000000..630e22b99edb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CopyOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CopyOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CopyOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CopyOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.cs new file mode 100644 index 000000000000..e239df1c9840 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Options to copy + public partial class CopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal + { + + /// Backing field for property. + private string _objectType; + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public CopyOption() + { + + } + } + /// Options to copy + public partial interface ICopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Options to copy + internal partial interface ICopyOptionInternal + + { + /// Type of the specific object - used for deserializing + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.json.cs new file mode 100644 index 000000000000..68acf7b2589a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CopyOption.json.cs @@ -0,0 +1,124 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Options to copy + public partial class CopyOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CopyOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "CopyOnExpiryOption": + { + return new CopyOnExpiryOption(json); + } + case "CustomCopyOption": + { + return new CustomCopyOption(json); + } + case "ImmediateCopyOption": + { + return new ImmediateCopyOption(json); + } + } + return new CopyOption(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.PowerShell.cs new file mode 100644 index 000000000000..43c02c867afe --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Duration based custom options to copy + [System.ComponentModel.TypeConverter(typeof(CustomCopyOptionTypeConverter))] + public partial class CustomCopyOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal CustomCopyOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal CustomCopyOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new CustomCopyOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new CustomCopyOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Duration based custom options to copy + [System.ComponentModel.TypeConverter(typeof(CustomCopyOptionTypeConverter))] + public partial interface ICustomCopyOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.TypeConverter.cs new file mode 100644 index 000000000000..e78da53193af --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class CustomCopyOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return CustomCopyOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return CustomCopyOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return CustomCopyOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.cs new file mode 100644 index 000000000000..8f0129b4bc82 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.cs @@ -0,0 +1,69 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Duration based custom options to copy + public partial class CustomCopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOptionInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(); + + /// Backing field for property. + private string _duration; + + /// Data copied after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Duration { get => this._duration; set => this._duration = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType = value; } + + /// Creates an new instance. + public CustomCopyOption() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__copyOption), __copyOption); + await eventListener.AssertObjectIsValid(nameof(__copyOption), __copyOption); + } + } + /// Duration based custom options to copy + public partial interface ICustomCopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption + { + /// Data copied after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Data copied after given timespan", + SerializedName = @"duration", + PossibleTypes = new [] { typeof(string) })] + string Duration { get; set; } + + } + /// Duration based custom options to copy + internal partial interface ICustomCopyOptionInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal + { + /// Data copied after given timespan + string Duration { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.json.cs new file mode 100644 index 000000000000..009172086737 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/CustomCopyOption.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Duration based custom options to copy + public partial class CustomCopyOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal CustomCopyOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(json); + {_duration = If( json?.PropertyT("duration"), out var __jsonDuration) ? (string)__jsonDuration : (string)Duration;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICustomCopyOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new CustomCopyOption(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __copyOption?.ToJson(container, serializationMode); + AddIf( null != (((object)this._duration)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._duration.ToString()) : null, "duration" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.PowerShell.cs new file mode 100644 index 000000000000..6209759f2cb4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// DataStoreInfo base + [System.ComponentModel.TypeConverter(typeof(DataStoreInfoBaseTypeConverter))] + public partial class DataStoreInfoBase + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DataStoreInfoBase(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DataStoreInfoBase(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DataStoreInfoBase(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DataStoreInfoBase(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// DataStoreInfo base + [System.ComponentModel.TypeConverter(typeof(DataStoreInfoBaseTypeConverter))] + public partial interface IDataStoreInfoBase + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.TypeConverter.cs new file mode 100644 index 000000000000..a885a3e7a901 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DataStoreInfoBaseTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DataStoreInfoBase.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DataStoreInfoBase.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DataStoreInfoBase.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.cs new file mode 100644 index 000000000000..1d28041b7bd8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// DataStoreInfo base + public partial class DataStoreInfoBase : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes _dataStoreType; + + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get => this._dataStoreType; set => this._dataStoreType = value; } + + /// Backing field for property. + private string _objectType; + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public DataStoreInfoBase() + { + + } + } + /// DataStoreInfo base + public partial interface IDataStoreInfoBase : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"type of datastore; SnapShot/Hot/Archive", + SerializedName = @"dataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// DataStoreInfo base + internal partial interface IDataStoreInfoBaseInternal + + { + /// type of datastore; SnapShot/Hot/Archive + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.json.cs new file mode 100644 index 000000000000..d1784a7187ab --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DataStoreInfoBase.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// DataStoreInfo base + public partial class DataStoreInfoBase + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DataStoreInfoBase(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_dataStoreType = If( json?.PropertyT("dataStoreType"), out var __jsonDataStoreType) ? (string)__jsonDataStoreType : (string)DataStoreType;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DataStoreInfoBase(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._dataStoreType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataStoreType.ToString()) : null, "dataStoreType" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.PowerShell.cs new file mode 100644 index 000000000000..4710287ed8a2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Datasource to be backed up + [System.ComponentModel.TypeConverter(typeof(DatasourceTypeConverter))] + public partial class Datasource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal Datasource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceId = (string) content.GetValueForProperty("ResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceLocation = (string) content.GetValueForProperty("ResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceName = (string) content.GetValueForProperty("ResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceType = (string) content.GetValueForProperty("ResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceUri = (string) content.GetValueForProperty("ResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceUri, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal Datasource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceId = (string) content.GetValueForProperty("ResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceLocation = (string) content.GetValueForProperty("ResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceName = (string) content.GetValueForProperty("ResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceType = (string) content.GetValueForProperty("ResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceUri = (string) content.GetValueForProperty("ResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)this).ResourceUri, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new Datasource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new Datasource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Datasource to be backed up + [System.ComponentModel.TypeConverter(typeof(DatasourceTypeConverter))] + public partial interface IDatasource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.TypeConverter.cs new file mode 100644 index 000000000000..5431617c978f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DatasourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return Datasource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return Datasource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return Datasource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.cs new file mode 100644 index 000000000000..15d2d1e5f5f3 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.cs @@ -0,0 +1,157 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Datasource to be backed up + public partial class Datasource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal + { + + /// Backing field for property. + private string _objectType; + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Backing field for property. + private string _resourceId; + + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceId { get => this._resourceId; set => this._resourceId = value; } + + /// Backing field for property. + private string _resourceLocation; + + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceLocation { get => this._resourceLocation; set => this._resourceLocation = value; } + + /// Backing field for property. + private string _resourceName; + + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceName { get => this._resourceName; set => this._resourceName = value; } + + /// Backing field for property. + private string _resourceType; + + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceType { get => this._resourceType; set => this._resourceType = value; } + + /// Backing field for property. + private string _resourceUri; + + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceUri { get => this._resourceUri; set => this._resourceUri = value; } + + /// Backing field for property. + private string _type; + + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; set => this._type = value; } + + /// Creates an new instance. + public Datasource() + { + + } + } + /// Datasource to be backed up + public partial interface IDatasource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault.", + SerializedName = @"resourceID", + PossibleTypes = new [] { typeof(string) })] + string ResourceId { get; set; } + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Location of datasource.", + SerializedName = @"resourceLocation", + PossibleTypes = new [] { typeof(string) })] + string ResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique identifier of the resource in the context of parent.", + SerializedName = @"resourceName", + PossibleTypes = new [] { typeof(string) })] + string ResourceName { get; set; } + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource Type of Datasource.", + SerializedName = @"resourceType", + PossibleTypes = new [] { typeof(string) })] + string ResourceType { get; set; } + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Uri of the resource.", + SerializedName = @"resourceUri", + PossibleTypes = new [] { typeof(string) })] + string ResourceUri { get; set; } + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"DatasourceType of the resource.", + SerializedName = @"datasourceType", + PossibleTypes = new [] { typeof(string) })] + string Type { get; set; } + + } + /// Datasource to be backed up + internal partial interface IDatasourceInternal + + { + /// Type of Datasource object, used to initialize the right inherited type + string ObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + string ResourceId { get; set; } + /// Location of datasource. + string ResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + string ResourceName { get; set; } + /// Resource Type of Datasource. + string ResourceType { get; set; } + /// Uri of the resource. + string ResourceUri { get; set; } + /// DatasourceType of the resource. + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.json.cs new file mode 100644 index 000000000000..1a321a120b6b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Datasource.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Datasource to be backed up + public partial class Datasource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal Datasource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_type = If( json?.PropertyT("datasourceType"), out var __jsonDatasourceType) ? (string)__jsonDatasourceType : (string)Type;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + {_resourceId = If( json?.PropertyT("resourceID"), out var __jsonResourceId) ? (string)__jsonResourceId : (string)ResourceId;} + {_resourceLocation = If( json?.PropertyT("resourceLocation"), out var __jsonResourceLocation) ? (string)__jsonResourceLocation : (string)ResourceLocation;} + {_resourceName = If( json?.PropertyT("resourceName"), out var __jsonResourceName) ? (string)__jsonResourceName : (string)ResourceName;} + {_resourceType = If( json?.PropertyT("resourceType"), out var __jsonResourceType) ? (string)__jsonResourceType : (string)ResourceType;} + {_resourceUri = If( json?.PropertyT("resourceUri"), out var __jsonResourceUri) ? (string)__jsonResourceUri : (string)ResourceUri;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new Datasource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "datasourceType" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AddIf( null != (((object)this._resourceId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceId.ToString()) : null, "resourceID" ,container.Add ); + AddIf( null != (((object)this._resourceLocation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceLocation.ToString()) : null, "resourceLocation" ,container.Add ); + AddIf( null != (((object)this._resourceName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceName.ToString()) : null, "resourceName" ,container.Add ); + AddIf( null != (((object)this._resourceType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceType.ToString()) : null, "resourceType" ,container.Add ); + AddIf( null != (((object)this._resourceUri)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceUri.ToString()) : null, "resourceUri" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.PowerShell.cs new file mode 100644 index 000000000000..cc4bea7ea00d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// DatasourceSet details of datasource to be backed up + [System.ComponentModel.TypeConverter(typeof(DatasourceSetTypeConverter))] + public partial class DatasourceSet + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DatasourceSet(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).DatasourceType = (string) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).DatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceId = (string) content.GetValueForProperty("ResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceLocation = (string) content.GetValueForProperty("ResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceName = (string) content.GetValueForProperty("ResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceType = (string) content.GetValueForProperty("ResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceUri = (string) content.GetValueForProperty("ResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceUri, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DatasourceSet(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).DatasourceType = (string) content.GetValueForProperty("DatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).DatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceId = (string) content.GetValueForProperty("ResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceLocation = (string) content.GetValueForProperty("ResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceName = (string) content.GetValueForProperty("ResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceType = (string) content.GetValueForProperty("ResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceUri = (string) content.GetValueForProperty("ResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)this).ResourceUri, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DatasourceSet(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DatasourceSet(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// DatasourceSet details of datasource to be backed up + [System.ComponentModel.TypeConverter(typeof(DatasourceSetTypeConverter))] + public partial interface IDatasourceSet + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.TypeConverter.cs new file mode 100644 index 000000000000..eaa4a6376a95 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DatasourceSetTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DatasourceSet.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DatasourceSet.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DatasourceSet.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.cs new file mode 100644 index 000000000000..445a982822a5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.cs @@ -0,0 +1,157 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// DatasourceSet details of datasource to be backed up + public partial class DatasourceSet : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal + { + + /// Backing field for property. + private string _datasourceType; + + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string DatasourceType { get => this._datasourceType; set => this._datasourceType = value; } + + /// Backing field for property. + private string _objectType; + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Backing field for property. + private string _resourceId; + + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceId { get => this._resourceId; set => this._resourceId = value; } + + /// Backing field for property. + private string _resourceLocation; + + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceLocation { get => this._resourceLocation; set => this._resourceLocation = value; } + + /// Backing field for property. + private string _resourceName; + + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceName { get => this._resourceName; set => this._resourceName = value; } + + /// Backing field for property. + private string _resourceType; + + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceType { get => this._resourceType; set => this._resourceType = value; } + + /// Backing field for property. + private string _resourceUri; + + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceUri { get => this._resourceUri; set => this._resourceUri = value; } + + /// Creates an new instance. + public DatasourceSet() + { + + } + } + /// DatasourceSet details of datasource to be backed up + public partial interface IDatasourceSet : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"DatasourceType of the resource.", + SerializedName = @"datasourceType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault.", + SerializedName = @"resourceID", + PossibleTypes = new [] { typeof(string) })] + string ResourceId { get; set; } + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Location of datasource.", + SerializedName = @"resourceLocation", + PossibleTypes = new [] { typeof(string) })] + string ResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique identifier of the resource in the context of parent.", + SerializedName = @"resourceName", + PossibleTypes = new [] { typeof(string) })] + string ResourceName { get; set; } + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource Type of Datasource.", + SerializedName = @"resourceType", + PossibleTypes = new [] { typeof(string) })] + string ResourceType { get; set; } + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Uri of the resource.", + SerializedName = @"resourceUri", + PossibleTypes = new [] { typeof(string) })] + string ResourceUri { get; set; } + + } + /// DatasourceSet details of datasource to be backed up + internal partial interface IDatasourceSetInternal + + { + /// DatasourceType of the resource. + string DatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string ObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + string ResourceId { get; set; } + /// Location of datasource. + string ResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + string ResourceName { get; set; } + /// Resource Type of Datasource. + string ResourceType { get; set; } + /// Uri of the resource. + string ResourceUri { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.json.cs new file mode 100644 index 000000000000..91e87082f4d4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DatasourceSet.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// DatasourceSet details of datasource to be backed up + public partial class DatasourceSet + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DatasourceSet(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_datasourceType = If( json?.PropertyT("datasourceType"), out var __jsonDatasourceType) ? (string)__jsonDatasourceType : (string)DatasourceType;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + {_resourceId = If( json?.PropertyT("resourceID"), out var __jsonResourceId) ? (string)__jsonResourceId : (string)ResourceId;} + {_resourceLocation = If( json?.PropertyT("resourceLocation"), out var __jsonResourceLocation) ? (string)__jsonResourceLocation : (string)ResourceLocation;} + {_resourceName = If( json?.PropertyT("resourceName"), out var __jsonResourceName) ? (string)__jsonResourceName : (string)ResourceName;} + {_resourceType = If( json?.PropertyT("resourceType"), out var __jsonResourceType) ? (string)__jsonResourceType : (string)ResourceType;} + {_resourceUri = If( json?.PropertyT("resourceUri"), out var __jsonResourceUri) ? (string)__jsonResourceUri : (string)ResourceUri;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DatasourceSet(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._datasourceType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._datasourceType.ToString()) : null, "datasourceType" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AddIf( null != (((object)this._resourceId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceId.ToString()) : null, "resourceID" ,container.Add ); + AddIf( null != (((object)this._resourceLocation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceLocation.ToString()) : null, "resourceLocation" ,container.Add ); + AddIf( null != (((object)this._resourceName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceName.ToString()) : null, "resourceName" ,container.Add ); + AddIf( null != (((object)this._resourceType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceType.ToString()) : null, "resourceType" ,container.Add ); + AddIf( null != (((object)this._resourceUri)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceUri.ToString()) : null, "resourceUri" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Day.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.PowerShell.cs new file mode 100644 index 000000000000..7d6ef8e9d44d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Day of the week + [System.ComponentModel.TypeConverter(typeof(DayTypeConverter))] + public partial class Day + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal Day(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).Date = (int?) content.GetValueForProperty("Date",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).Date, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).IsLast = (bool?) content.GetValueForProperty("IsLast",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).IsLast, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal Day(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).Date = (int?) content.GetValueForProperty("Date",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).Date, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).IsLast = (bool?) content.GetValueForProperty("IsLast",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal)this).IsLast, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new Day(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new Day(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Day of the week + [System.ComponentModel.TypeConverter(typeof(DayTypeConverter))] + public partial interface IDay + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Day.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.TypeConverter.cs new file mode 100644 index 000000000000..2c253ac014df --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DayTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return Day.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return Day.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return Day.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Day.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.cs new file mode 100644 index 000000000000..91b25942e28b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Day of the week + public partial class Day : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDayInternal + { + + /// Backing field for property. + private int? _date; + + /// Date of the month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? Date { get => this._date; set => this._date = value; } + + /// Backing field for property. + private bool? _isLast; + + /// Whether Date is last date of month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? IsLast { get => this._isLast; set => this._isLast = value; } + + /// Creates an new instance. + public Day() + { + + } + } + /// Day of the week + public partial interface IDay : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Date of the month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Date of the month", + SerializedName = @"date", + PossibleTypes = new [] { typeof(int) })] + int? Date { get; set; } + /// Whether Date is last date of month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Whether Date is last date of month", + SerializedName = @"isLast", + PossibleTypes = new [] { typeof(bool) })] + bool? IsLast { get; set; } + + } + /// Day of the week + internal partial interface IDayInternal + + { + /// Date of the month + int? Date { get; set; } + /// Whether Date is last date of month + bool? IsLast { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Day.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.json.cs new file mode 100644 index 000000000000..274406f98249 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Day.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Day of the week + public partial class Day + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal Day(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_date = If( json?.PropertyT("date"), out var __jsonDate) ? (int?)__jsonDate : Date;} + {_isLast = If( json?.PropertyT("isLast"), out var __jsonIsLast) ? (bool?)__jsonIsLast : IsLast;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new Day(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._date ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNumber((int)this._date) : null, "date" ,container.Add ); + AddIf( null != this._isLast ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._isLast) : null, "isLast" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.PowerShell.cs new file mode 100644 index 000000000000..ce177af5b85c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Delete Option + [System.ComponentModel.TypeConverter(typeof(DeleteOptionTypeConverter))] + public partial class DeleteOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DeleteOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DeleteOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration = (string) content.GetValueForProperty("Duration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).Duration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DeleteOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DeleteOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Delete Option + [System.ComponentModel.TypeConverter(typeof(DeleteOptionTypeConverter))] + public partial interface IDeleteOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.TypeConverter.cs new file mode 100644 index 000000000000..a98115701565 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DeleteOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DeleteOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DeleteOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DeleteOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.cs new file mode 100644 index 000000000000..7364bc585a0d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Delete Option + public partial class DeleteOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal + { + + /// Backing field for property. + private string _duration; + + /// Duration of deletion after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Duration { get => this._duration; set => this._duration = value; } + + /// Backing field for property. + private string _objectType; + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public DeleteOption() + { + + } + } + /// Delete Option + public partial interface IDeleteOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Duration of deletion after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Duration of deletion after given timespan", + SerializedName = @"duration", + PossibleTypes = new [] { typeof(string) })] + string Duration { get; set; } + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Delete Option + internal partial interface IDeleteOptionInternal + + { + /// Duration of deletion after given timespan + string Duration { get; set; } + /// Type of the specific object - used for deserializing + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.json.cs new file mode 100644 index 000000000000..752331e37c1a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DeleteOption.json.cs @@ -0,0 +1,118 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Delete Option + public partial class DeleteOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DeleteOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_duration = If( json?.PropertyT("duration"), out var __jsonDuration) ? (string)__jsonDuration : (string)Duration;} + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "AbsoluteDeleteOption": + { + return new AbsoluteDeleteOption(json); + } + } + return new DeleteOption(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._duration)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._duration.ToString()) : null, "duration" ,container.Add ); + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.PowerShell.cs new file mode 100644 index 000000000000..d88c6a7526f1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Identity details + [System.ComponentModel.TypeConverter(typeof(DppIdentityDetailsTypeConverter))] + public partial class DppIdentityDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppIdentityDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppIdentityDetails(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppIdentityDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).PrincipalId = (string) content.GetValueForProperty("PrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).PrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).TenantId = (string) content.GetValueForProperty("TenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).TenantId, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppIdentityDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).PrincipalId = (string) content.GetValueForProperty("PrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).PrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).TenantId = (string) content.GetValueForProperty("TenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)this).TenantId, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Identity details + [System.ComponentModel.TypeConverter(typeof(DppIdentityDetailsTypeConverter))] + public partial interface IDppIdentityDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.TypeConverter.cs new file mode 100644 index 000000000000..d3bf0432cc8e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppIdentityDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppIdentityDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppIdentityDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppIdentityDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.cs new file mode 100644 index 000000000000..d3e256fa3385 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.cs @@ -0,0 +1,121 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Identity details + public partial class DppIdentityDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal + { + + /// Backing field for property. + private string _identityUrl; + + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string IdentityUrl { get => this._identityUrl; } + + /// Internal Acessors for IdentityUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal.IdentityUrl { get => this._identityUrl; set { {_identityUrl = value;} } } + + /// Internal Acessors for PrincipalId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal.PrincipalId { get => this._principalId; set { {_principalId = value;} } } + + /// Internal Acessors for TenantId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal.TenantId { get => this._tenantId; set { {_tenantId = value;} } } + + /// Backing field for property. + private string _principalId; + + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string PrincipalId { get => this._principalId; } + + /// Backing field for property. + private string _tenantId; + + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string TenantId { get => this._tenantId; } + + /// Backing field for property. + private string _type; + + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; set => this._type = value; } + + /// Creates an new instance. + public DppIdentityDetails() + { + + } + } + /// Identity details + public partial interface IDppIdentityDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Identity Url", + SerializedName = @"identityUrl", + PossibleTypes = new [] { typeof(string) })] + string IdentityUrl { get; } + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure resource.", + SerializedName = @"principalId", + PossibleTypes = new [] { typeof(string) })] + string PrincipalId { get; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member.", + SerializedName = @"tenantId", + PossibleTypes = new [] { typeof(string) })] + string TenantId { get; } + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; set; } + + } + /// Identity details + internal partial interface IDppIdentityDetailsInternal + + { + /// Identity Url + string IdentityUrl { get; set; } + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + string PrincipalId { get; set; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + string TenantId { get; set; } + /// The identityType which can be either SystemAssigned or None + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.json.cs new file mode 100644 index 000000000000..63bed39c60ea --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppIdentityDetails.json.cs @@ -0,0 +1,116 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Identity details + public partial class DppIdentityDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DppIdentityDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + {_identityUrl = If( json?.PropertyT("identityUrl"), out var __jsonIdentityUrl) ? (string)__jsonIdentityUrl : (string)IdentityUrl;} + {_principalId = If( json?.PropertyT("principalId"), out var __jsonPrincipalId) ? (string)__jsonPrincipalId : (string)PrincipalId;} + {_tenantId = If( json?.PropertyT("tenantId"), out var __jsonTenantId) ? (string)__jsonTenantId : (string)TenantId;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppIdentityDetails(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._identityUrl)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._identityUrl.ToString()) : null, "identityUrl" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._principalId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._principalId.ToString()) : null, "principalId" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._tenantId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._tenantId.ToString()) : null, "tenantId" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.PowerShell.cs new file mode 100644 index 000000000000..7c81f7c65ade --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Resource class + [System.ComponentModel.TypeConverter(typeof(DppResourceTypeConverter))] + public partial class DppResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppResource(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal)this).Id, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Resource class + [System.ComponentModel.TypeConverter(typeof(DppResourceTypeConverter))] + public partial interface IDppResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.TypeConverter.cs new file mode 100644 index 000000000000..e9ba08fa3255 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.cs new file mode 100644 index 000000000000..f2c853bbec88 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.cs @@ -0,0 +1,95 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource class + public partial class DppResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal + { + + /// Backing field for property. + private string _id; + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Id { get => this._id; set { {_id = value;} } } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Name { get => this._name; set { {_name = value;} } } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceInternal.Type { get => this._type; set { {_type = value;} } } + + /// Backing field for property. + private string _name; + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; } + + /// Backing field for property. + private string _type; + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; } + + /// Creates an new instance. + public DppResource() + { + + } + } + /// Resource class + public partial interface IDppResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource Id represents the complete path to the resource.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; } + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource name associated with the resource.", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; } + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/...", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; } + + } + /// Resource class + internal partial interface IDppResourceInternal + + { + /// Resource Id represents the complete path to the resource. + string Id { get; set; } + /// Resource name associated with the resource. + string Name { get; set; } + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.json.cs new file mode 100644 index 000000000000..c72a0edd074a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResource.json.cs @@ -0,0 +1,114 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource class + public partial class DppResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DppResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.PowerShell.cs new file mode 100644 index 000000000000..c430e0c3087c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// ListResource + [System.ComponentModel.TypeConverter(typeof(DppResourceListTypeConverter))] + public partial class DppResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppResourceList(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// ListResource + [System.ComponentModel.TypeConverter(typeof(DppResourceListTypeConverter))] + public partial interface IDppResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.TypeConverter.cs new file mode 100644 index 000000000000..91ed9c8ce5b6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.cs new file mode 100644 index 000000000000..d0014031efd8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.cs @@ -0,0 +1,52 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// ListResource + public partial class DppResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + + /// Backing field for property. + private string _nextLink; + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string NextLink { get => this._nextLink; set => this._nextLink = value; } + + /// Creates an new instance. + public DppResourceList() + { + + } + } + /// ListResource + public partial interface IDppResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The uri to fetch the next page of resources. Call ListNext() fetches next page of resources.", + SerializedName = @"nextLink", + PossibleTypes = new [] { typeof(string) })] + string NextLink { get; set; } + + } + /// ListResource + internal partial interface IDppResourceListInternal + + { + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + string NextLink { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.json.cs new file mode 100644 index 000000000000..9fe5e0c1c01b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppResourceList.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// ListResource + public partial class DppResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DppResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_nextLink = If( json?.PropertyT("nextLink"), out var __jsonNextLink) ? (string)__jsonNextLink : (string)NextLink;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._nextLink)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._nextLink.ToString()) : null, "nextLink" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.PowerShell.cs new file mode 100644 index 000000000000..e6d833aeabe7 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.PowerShell.cs @@ -0,0 +1,151 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceTypeConverter))] + public partial class DppTrackedResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppTrackedResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppTrackedResource(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppTrackedResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppTrackedResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceTypeConverter))] + public partial interface IDppTrackedResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.TypeConverter.cs new file mode 100644 index 000000000000..f74cb3cf7dce --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppTrackedResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppTrackedResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppTrackedResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppTrackedResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.cs new file mode 100644 index 000000000000..1a64b552906b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.cs @@ -0,0 +1,235 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DppTrackedResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal + { + + /// Backing field for property. + private string _eTag; + + /// Optional ETag. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ETag { get => this._eTag; set => this._eTag = value; } + + /// Backing field for property. + private string _id; + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails _identity; + + /// Input Managed Identity Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get => (this._identity = this._identity ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails()); set => this._identity = value; } + + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId; } + + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId; } + + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).Type = value; } + + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl; } + + /// Backing field for property. + private string _location; + + /// Resource location. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Id { get => this._id; set { {_id = value;} } } + + /// Internal Acessors for Identity + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Identity { get => (this._identity = this._identity ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails()); set { {_identity = value;} } } + + /// Internal Acessors for IdentityPrincipalId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId = value; } + + /// Internal Acessors for IdentityTenantId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId = value; } + + /// Internal Acessors for IdentityUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Name { get => this._name; set { {_name = value;} } } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Type { get => this._type; set { {_type = value;} } } + + /// Backing field for property. + private string _name; + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags _tag; + + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get => (this._tag = this._tag ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTags()); set => this._tag = value; } + + /// Backing field for property. + private string _type; + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; } + + /// Creates an new instance. + public DppTrackedResource() + { + + } + } + public partial interface IDppTrackedResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Optional ETag. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Optional ETag.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + string ETag { get; set; } + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource Id represents the complete path to the resource.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; } + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure resource.", + SerializedName = @"principalId", + PossibleTypes = new [] { typeof(string) })] + string IdentityPrincipalId { get; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member.", + SerializedName = @"tenantId", + PossibleTypes = new [] { typeof(string) })] + string IdentityTenantId { get; } + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string IdentityType { get; set; } + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Identity Url", + SerializedName = @"identityUrl", + PossibleTypes = new [] { typeof(string) })] + string IdentityUrl { get; } + /// Resource location. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource location.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource name associated with the resource.", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; } + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get; set; } + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/...", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; } + + } + internal partial interface IDppTrackedResourceInternal + + { + /// Optional ETag. + string ETag { get; set; } + /// Resource Id represents the complete path to the resource. + string Id { get; set; } + /// Input Managed Identity Details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get; set; } + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + string IdentityPrincipalId { get; set; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + string IdentityTenantId { get; set; } + /// The identityType which can be either SystemAssigned or None + string IdentityType { get; set; } + /// Identity Url + string IdentityUrl { get; set; } + /// Resource location. + string Location { get; set; } + /// Resource name associated with the resource. + string Name { get; set; } + /// Resource tags. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get; set; } + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.json.cs new file mode 100644 index 000000000000..9c137192e2fc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResource.json.cs @@ -0,0 +1,121 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DppTrackedResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DppTrackedResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_identity = If( json?.PropertyT("identity"), out var __jsonIdentity) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails.FromJson(__jsonIdentity) : Identity;} + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + {_eTag = If( json?.PropertyT("eTag"), out var __jsonETag) ? (string)__jsonETag : (string)ETag;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + {_location = If( json?.PropertyT("location"), out var __jsonLocation) ? (string)__jsonLocation : (string)Location;} + {_tag = If( json?.PropertyT("tags"), out var __jsonTags) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTags.FromJson(__jsonTags) : Tag;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppTrackedResource(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._identity ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._identity.ToJson(null,serializationMode) : null, "identity" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + } + AddIf( null != (((object)this._eTag)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._eTag.ToString()) : null, "eTag" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + } + AddIf( null != (((object)this._location)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._location.ToString()) : null, "location" ,container.Add ); + AddIf( null != this._tag ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._tag.ToJson(null,serializationMode) : null, "tags" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.PowerShell.cs new file mode 100644 index 000000000000..56f32b53011f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceListTypeConverter))] + public partial class DppTrackedResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppTrackedResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppTrackedResourceList(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppTrackedResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppTrackedResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceListTypeConverter))] + public partial interface IDppTrackedResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.TypeConverter.cs new file mode 100644 index 000000000000..c2e7f0122fd2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppTrackedResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppTrackedResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppTrackedResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppTrackedResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.cs new file mode 100644 index 000000000000..11adc73e1bca --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.cs @@ -0,0 +1,49 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DppTrackedResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceListInternal + { + + /// Backing field for property. + private string _nextLink; + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string NextLink { get => this._nextLink; set => this._nextLink = value; } + + /// Creates an new instance. + public DppTrackedResourceList() + { + + } + } + public partial interface IDppTrackedResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The uri to fetch the next page of resources. Call ListNext() fetches next page of resources.", + SerializedName = @"nextLink", + PossibleTypes = new [] { typeof(string) })] + string NextLink { get; set; } + + } + internal partial interface IDppTrackedResourceListInternal + + { + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + string NextLink { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.json.cs new file mode 100644 index 000000000000..42d64909b3c7 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceList.json.cs @@ -0,0 +1,100 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DppTrackedResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DppTrackedResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_nextLink = If( json?.PropertyT("nextLink"), out var __jsonNextLink) ? (string)__jsonNextLink : (string)NextLink;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppTrackedResourceList(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._nextLink)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._nextLink.ToString()) : null, "nextLink" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.PowerShell.cs new file mode 100644 index 000000000000..2690d8bc5c4e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Resource tags. + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceTagsTypeConverter))] + public partial class DppTrackedResourceTags + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DppTrackedResourceTags(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DppTrackedResourceTags(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DppTrackedResourceTags(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DppTrackedResourceTags(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Resource tags. + [System.ComponentModel.TypeConverter(typeof(DppTrackedResourceTagsTypeConverter))] + public partial interface IDppTrackedResourceTags + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.TypeConverter.cs new file mode 100644 index 000000000000..5f15c6045279 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DppTrackedResourceTagsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DppTrackedResourceTags.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DppTrackedResourceTags.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DppTrackedResourceTags.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.cs new file mode 100644 index 000000000000..8e5dbad17f2e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.cs @@ -0,0 +1,30 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource tags. + public partial class DppTrackedResourceTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTagsInternal + { + + /// Creates an new instance. + public DppTrackedResourceTags() + { + + } + } + /// Resource tags. + public partial interface IDppTrackedResourceTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + + } + /// Resource tags. + internal partial interface IDppTrackedResourceTagsInternal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.dictionary.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.dictionary.cs new file mode 100644 index 000000000000..a7ca9a17a3c3 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.dictionary.cs @@ -0,0 +1,70 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DppTrackedResourceTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + protected global::System.Collections.Generic.Dictionary __additionalProperties = new global::System.Collections.Generic.Dictionary(); + + global::System.Collections.Generic.IDictionary Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.AdditionalProperties { get => __additionalProperties; } + + int Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Count { get => __additionalProperties.Count; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Keys { get => __additionalProperties.Keys; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Values { get => __additionalProperties.Values; } + + public string this[global::System.String index] { get => __additionalProperties[index]; set => __additionalProperties[index] = value; } + + /// + /// + public void Add(global::System.String key, string value) => __additionalProperties.Add( key, value); + + public void Clear() => __additionalProperties.Clear(); + + /// + public bool ContainsKey(global::System.String key) => __additionalProperties.ContainsKey( key); + + /// + public void CopyFrom(global::System.Collections.IDictionary source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public void CopyFrom(global::System.Management.Automation.PSObject source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public bool Remove(global::System.String key) => __additionalProperties.Remove( key); + + /// + /// + public bool TryGetValue(global::System.String key, out string value) => __additionalProperties.TryGetValue( key, out value); + + /// + + public static implicit operator global::System.Collections.Generic.Dictionary(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTags source) => source.__additionalProperties; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.json.cs new file mode 100644 index 000000000000..7cf0d0cc7577 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/DppTrackedResourceTags.json.cs @@ -0,0 +1,102 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource tags. + public partial class DppTrackedResourceTags + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + /// + internal DppTrackedResourceTags(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, global::System.Collections.Generic.HashSet exclusions = null) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson( json, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, null ,exclusions ); + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DppTrackedResourceTags(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, container); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Error.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.PowerShell.cs new file mode 100644 index 000000000000..d6d8109b946e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// The resource management error response. + [System.ComponentModel.TypeConverter(typeof(ErrorTypeConverter))] + public partial class Error + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new Error(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new Error(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal Error(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal Error(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// The resource management error response. + [System.ComponentModel.TypeConverter(typeof(ErrorTypeConverter))] + public partial interface IError + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Error.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.TypeConverter.cs new file mode 100644 index 000000000000..fb4571bf47db --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ErrorTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return Error.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return Error.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return Error.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Error.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.cs new file mode 100644 index 000000000000..340136b8adbb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.cs @@ -0,0 +1,129 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The resource management error response. + public partial class Error : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] _additionalInfo; + + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get => this._additionalInfo; } + + /// Backing field for property. + private string _code; + + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Code { get => this._code; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] _detail; + + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get => this._detail; } + + /// Backing field for property. + private string _message; + + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Message { get => this._message; } + + /// Internal Acessors for AdditionalInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal.AdditionalInfo { get => this._additionalInfo; set { {_additionalInfo = value;} } } + + /// Internal Acessors for Code + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal.Code { get => this._code; set { {_code = value;} } } + + /// Internal Acessors for Detail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal.Detail { get => this._detail; set { {_detail = value;} } } + + /// Internal Acessors for Message + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal.Message { get => this._message; set { {_message = value;} } } + + /// Internal Acessors for Target + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal.Target { get => this._target; set { {_target = value;} } } + + /// Backing field for property. + private string _target; + + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Target { get => this._target; } + + /// Creates an new instance. + public Error() + { + + } + } + /// The resource management error response. + public partial interface IError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error additional info.", + SerializedName = @"additionalInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; } + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error code.", + SerializedName = @"code", + PossibleTypes = new [] { typeof(string) })] + string Code { get; } + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error details.", + SerializedName = @"details", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; } + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error message.", + SerializedName = @"message", + PossibleTypes = new [] { typeof(string) })] + string Message { get; } + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error target.", + SerializedName = @"target", + PossibleTypes = new [] { typeof(string) })] + string Target { get; } + + } + /// The resource management error response. + internal partial interface IErrorInternal + + { + /// The error additional info. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; set; } + /// The error code. + string Code { get; set; } + /// The error details. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; set; } + /// The error message. + string Message { get; set; } + /// The error target. + string Target { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/Error.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.json.cs new file mode 100644 index 000000000000..0db400baaaca --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/Error.json.cs @@ -0,0 +1,140 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The resource management error response. + public partial class Error + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal Error(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_additionalInfo = If( json?.PropertyT("additionalInfo"), out var __jsonAdditionalInfo) ? If( __jsonAdditionalInfo as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1.FromJson(__u) )) ))() : null : AdditionalInfo;} + {_code = If( json?.PropertyT("code"), out var __jsonCode) ? (string)__jsonCode : (string)Code;} + {_message = If( json?.PropertyT("message"), out var __jsonMessage) ? (string)__jsonMessage : (string)Message;} + {_target = If( json?.PropertyT("target"), out var __jsonTarget) ? (string)__jsonTarget : (string)Target;} + {_detail = If( json?.PropertyT("details"), out var __jsonDetails) ? If( __jsonDetails as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __q) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__q, (__p)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error.FromJson(__p) )) ))() : null : Detail;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new Error(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + if (null != this._additionalInfo) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._additionalInfo ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("additionalInfo",__w); + } + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._code)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._code.ToString()) : null, "code" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._message)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._message.ToString()) : null, "message" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._target)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._target.ToString()) : null, "target" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + if (null != this._detail) + { + var __r = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __s in this._detail ) + { + AddIf(__s?.ToJson(null, serializationMode) ,__r.Add); + } + container.Add("details",__r); + } + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.PowerShell.cs new file mode 100644 index 000000000000..aef9d9b6c774 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// The resource management error additional info. + [System.ComponentModel.TypeConverter(typeof(ErrorAdditionalInfo1TypeConverter))] + public partial class ErrorAdditionalInfo1 + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1 DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ErrorAdditionalInfo1(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1 DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ErrorAdditionalInfo1(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ErrorAdditionalInfo1(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Info = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2) content.GetValueForProperty("Info",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Info, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo2TypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Type, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ErrorAdditionalInfo1(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Info = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2) content.GetValueForProperty("Info",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Info, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo2TypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal)this).Type, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1 FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// The resource management error additional info. + [System.ComponentModel.TypeConverter(typeof(ErrorAdditionalInfo1TypeConverter))] + public partial interface IErrorAdditionalInfo1 + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.TypeConverter.cs new file mode 100644 index 000000000000..4da8cadea1a5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ErrorAdditionalInfo1TypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1 ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ErrorAdditionalInfo1.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ErrorAdditionalInfo1.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ErrorAdditionalInfo1.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.cs new file mode 100644 index 000000000000..cc1107d0ac66 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.cs @@ -0,0 +1,69 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The resource management error additional info. + public partial class ErrorAdditionalInfo1 : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 _info; + + /// The additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 Info { get => (this._info = this._info ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo2()); } + + /// Internal Acessors for Info + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal.Info { get => (this._info = this._info ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo2()); set { {_info = value;} } } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1Internal.Type { get => this._type; set { {_type = value;} } } + + /// Backing field for property. + private string _type; + + /// The additional info type. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; } + + /// Creates an new instance. + public ErrorAdditionalInfo1() + { + + } + } + /// The resource management error additional info. + public partial interface IErrorAdditionalInfo1 : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// The additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The additional info.", + SerializedName = @"info", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 Info { get; } + /// The additional info type. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The additional info type.", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; } + + } + /// The resource management error additional info. + internal partial interface IErrorAdditionalInfo1Internal + + { + /// The additional info. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 Info { get; set; } + /// The additional info type. + string Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.json.cs new file mode 100644 index 000000000000..70100bc9457a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo1.json.cs @@ -0,0 +1,109 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The resource management error additional info. + public partial class ErrorAdditionalInfo1 + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ErrorAdditionalInfo1(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_info = If( json?.PropertyT("info"), out var __jsonInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo2.FromJson(__jsonInfo) : Info;} + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1 FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ErrorAdditionalInfo1(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._info ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._info.ToJson(null,serializationMode) : null, "info" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.PowerShell.cs new file mode 100644 index 000000000000..a819b71cb5b9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// The additional info. + [System.ComponentModel.TypeConverter(typeof(ErrorAdditionalInfo2TypeConverter))] + public partial class ErrorAdditionalInfo2 + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ErrorAdditionalInfo2(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ErrorAdditionalInfo2(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ErrorAdditionalInfo2(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ErrorAdditionalInfo2(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// The additional info. + [System.ComponentModel.TypeConverter(typeof(ErrorAdditionalInfo2TypeConverter))] + public partial interface IErrorAdditionalInfo2 + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.TypeConverter.cs new file mode 100644 index 000000000000..92fed890de97 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ErrorAdditionalInfo2TypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ErrorAdditionalInfo2.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ErrorAdditionalInfo2.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ErrorAdditionalInfo2.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.cs new file mode 100644 index 000000000000..701043884341 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.cs @@ -0,0 +1,29 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The additional info. + public partial class ErrorAdditionalInfo2 : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2Internal + { + + /// Creates an new instance. + public ErrorAdditionalInfo2() + { + + } + } + /// The additional info. + public partial interface IErrorAdditionalInfo2 : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + + } + /// The additional info. + internal partial interface IErrorAdditionalInfo2Internal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.json.cs new file mode 100644 index 000000000000..b4005b6d0fea --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ErrorAdditionalInfo2.json.cs @@ -0,0 +1,99 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The additional info. + public partial class ErrorAdditionalInfo2 + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ErrorAdditionalInfo2(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo2 FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ErrorAdditionalInfo2(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.PowerShell.cs new file mode 100644 index 000000000000..afb5daceb2fd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// The result for export jobs containing blob details. + [System.ComponentModel.TypeConverter(typeof(ExportJobsResultTypeConverter))] + public partial class ExportJobsResult + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ExportJobsResult(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ExportJobsResult(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ExportJobsResult(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobSasKey = (string) content.GetValueForProperty("BlobSasKey",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobSasKey, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobUrl = (string) content.GetValueForProperty("BlobUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobSasKey = (string) content.GetValueForProperty("ExcelFileBlobSasKey",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobSasKey, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobUrl = (string) content.GetValueForProperty("ExcelFileBlobUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobUrl, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ExportJobsResult(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobSasKey = (string) content.GetValueForProperty("BlobSasKey",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobSasKey, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobUrl = (string) content.GetValueForProperty("BlobUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).BlobUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobSasKey = (string) content.GetValueForProperty("ExcelFileBlobSasKey",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobSasKey, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobUrl = (string) content.GetValueForProperty("ExcelFileBlobUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal)this).ExcelFileBlobUrl, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// The result for export jobs containing blob details. + [System.ComponentModel.TypeConverter(typeof(ExportJobsResultTypeConverter))] + public partial interface IExportJobsResult + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.TypeConverter.cs new file mode 100644 index 000000000000..1d8171c848f2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ExportJobsResultTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ExportJobsResult.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ExportJobsResult.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ExportJobsResult.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.cs new file mode 100644 index 000000000000..52b443cadc48 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.cs @@ -0,0 +1,109 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The result for export jobs containing blob details. + public partial class ExportJobsResult : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal + { + + /// Backing field for property. + private string _blobSasKey; + + /// SAS key to access the blob. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BlobSasKey { get => this._blobSasKey; } + + /// Backing field for property. + private string _blobUrl; + + /// URL of the blob into which the serialized string of list of jobs is exported. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BlobUrl { get => this._blobUrl; } + + /// Backing field for property. + private string _excelFileBlobSasKey; + + /// SAS key to access the ExcelFile blob. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ExcelFileBlobSasKey { get => this._excelFileBlobSasKey; } + + /// Backing field for property. + private string _excelFileBlobUrl; + + /// URL of the blob into which the ExcelFile is uploaded. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ExcelFileBlobUrl { get => this._excelFileBlobUrl; } + + /// Internal Acessors for BlobSasKey + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal.BlobSasKey { get => this._blobSasKey; set { {_blobSasKey = value;} } } + + /// Internal Acessors for BlobUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal.BlobUrl { get => this._blobUrl; set { {_blobUrl = value;} } } + + /// Internal Acessors for ExcelFileBlobSasKey + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal.ExcelFileBlobSasKey { get => this._excelFileBlobSasKey; set { {_excelFileBlobSasKey = value;} } } + + /// Internal Acessors for ExcelFileBlobUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResultInternal.ExcelFileBlobUrl { get => this._excelFileBlobUrl; set { {_excelFileBlobUrl = value;} } } + + /// Creates an new instance. + public ExportJobsResult() + { + + } + } + /// The result for export jobs containing blob details. + public partial interface IExportJobsResult : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// SAS key to access the blob. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"SAS key to access the blob.", + SerializedName = @"blobSasKey", + PossibleTypes = new [] { typeof(string) })] + string BlobSasKey { get; } + /// URL of the blob into which the serialized string of list of jobs is exported. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"URL of the blob into which the serialized string of list of jobs is exported.", + SerializedName = @"blobUrl", + PossibleTypes = new [] { typeof(string) })] + string BlobUrl { get; } + /// SAS key to access the ExcelFile blob. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"SAS key to access the ExcelFile blob.", + SerializedName = @"excelFileBlobSasKey", + PossibleTypes = new [] { typeof(string) })] + string ExcelFileBlobSasKey { get; } + /// URL of the blob into which the ExcelFile is uploaded. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"URL of the blob into which the ExcelFile is uploaded.", + SerializedName = @"excelFileBlobUrl", + PossibleTypes = new [] { typeof(string) })] + string ExcelFileBlobUrl { get; } + + } + /// The result for export jobs containing blob details. + internal partial interface IExportJobsResultInternal + + { + /// SAS key to access the blob. + string BlobSasKey { get; set; } + /// URL of the blob into which the serialized string of list of jobs is exported. + string BlobUrl { get; set; } + /// SAS key to access the ExcelFile blob. + string ExcelFileBlobSasKey { get; set; } + /// URL of the blob into which the ExcelFile is uploaded. + string ExcelFileBlobUrl { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.json.cs new file mode 100644 index 000000000000..6873d38319cc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ExportJobsResult.json.cs @@ -0,0 +1,119 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// The result for export jobs containing blob details. + public partial class ExportJobsResult + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ExportJobsResult(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_blobSasKey = If( json?.PropertyT("blobSasKey"), out var __jsonBlobSasKey) ? (string)__jsonBlobSasKey : (string)BlobSasKey;} + {_blobUrl = If( json?.PropertyT("blobUrl"), out var __jsonBlobUrl) ? (string)__jsonBlobUrl : (string)BlobUrl;} + {_excelFileBlobSasKey = If( json?.PropertyT("excelFileBlobSasKey"), out var __jsonExcelFileBlobSasKey) ? (string)__jsonExcelFileBlobSasKey : (string)ExcelFileBlobSasKey;} + {_excelFileBlobUrl = If( json?.PropertyT("excelFileBlobUrl"), out var __jsonExcelFileBlobUrl) ? (string)__jsonExcelFileBlobUrl : (string)ExcelFileBlobUrl;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ExportJobsResult(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._blobSasKey)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._blobSasKey.ToString()) : null, "blobSasKey" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._blobUrl)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._blobUrl.ToString()) : null, "blobUrl" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._excelFileBlobSasKey)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._excelFileBlobSasKey.ToString()) : null, "excelFileBlobSasKey" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._excelFileBlobUrl)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._excelFileBlobUrl.ToString()) : null, "excelFileBlobUrl" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.PowerShell.cs new file mode 100644 index 000000000000..04d34df967fd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Immediate copy Option + [System.ComponentModel.TypeConverter(typeof(ImmediateCopyOptionTypeConverter))] + public partial class ImmediateCopyOption + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ImmediateCopyOption(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ImmediateCopyOption(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ImmediateCopyOption(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ImmediateCopyOption(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Immediate copy Option + [System.ComponentModel.TypeConverter(typeof(ImmediateCopyOptionTypeConverter))] + public partial interface IImmediateCopyOption + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.TypeConverter.cs new file mode 100644 index 000000000000..9efc8eaab2e4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ImmediateCopyOptionTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ImmediateCopyOption.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ImmediateCopyOption.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ImmediateCopyOption.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.cs new file mode 100644 index 000000000000..104fe4b0ec55 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.cs @@ -0,0 +1,52 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Immediate copy Option + public partial class ImmediateCopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOptionInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(); + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)__copyOption).ObjectType = value; } + + /// Creates an new instance. + public ImmediateCopyOption() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__copyOption), __copyOption); + await eventListener.AssertObjectIsValid(nameof(__copyOption), __copyOption); + } + } + /// Immediate copy Option + public partial interface IImmediateCopyOption : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption + { + + } + /// Immediate copy Option + internal partial interface IImmediateCopyOptionInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.json.cs new file mode 100644 index 000000000000..a2ebb9b22daf --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ImmediateCopyOption.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Immediate copy Option + public partial class ImmediateCopyOption + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IImmediateCopyOption FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ImmediateCopyOption(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ImmediateCopyOption(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __copyOption = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption(json); + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __copyOption?.ToJson(container, serializationMode); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.PowerShell.cs new file mode 100644 index 000000000000..06b2d25224a0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Inner Error + [System.ComponentModel.TypeConverter(typeof(InnerErrorTypeConverter))] + public partial class InnerError + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new InnerError(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new InnerError(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal InnerError(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).AdditionalInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).EmbeddedInnerError = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) content.GetValueForProperty("EmbeddedInnerError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).EmbeddedInnerError, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorTypeConverter.ConvertFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal InnerError(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).AdditionalInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).EmbeddedInnerError = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) content.GetValueForProperty("EmbeddedInnerError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal)this).EmbeddedInnerError, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorTypeConverter.ConvertFrom); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Inner Error + [System.ComponentModel.TypeConverter(typeof(InnerErrorTypeConverter))] + public partial interface IInnerError + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.TypeConverter.cs new file mode 100644 index 000000000000..efa1a2f487eb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class InnerErrorTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return InnerError.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return InnerError.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return InnerError.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.cs new file mode 100644 index 000000000000..dcd853221b35 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.cs @@ -0,0 +1,86 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Inner Error + public partial class InnerError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo _additionalInfo; + + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo AdditionalInfo { get => (this._additionalInfo = this._additionalInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfo()); set => this._additionalInfo = value; } + + /// Backing field for property. + private string _code; + + /// Unique code for this error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Code { get => this._code; set => this._code = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError _embeddedInnerError; + + /// Child Inner Error, to allow Nesting. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError EmbeddedInnerError { get => (this._embeddedInnerError = this._embeddedInnerError ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError()); set => this._embeddedInnerError = value; } + + /// Creates an new instance. + public InnerError() + { + + } + } + /// Inner Error + public partial interface IInnerError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Any Key value pairs that can be provided to the cleint for additional verbose information.", + SerializedName = @"additionalInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo AdditionalInfo { get; set; } + /// Unique code for this error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique code for this error", + SerializedName = @"code", + PossibleTypes = new [] { typeof(string) })] + string Code { get; set; } + /// Child Inner Error, to allow Nesting. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Child Inner Error, to allow Nesting.", + SerializedName = @"embeddedInnerError", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError EmbeddedInnerError { get; set; } + + } + /// Inner Error + internal partial interface IInnerErrorInternal + + { + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo AdditionalInfo { get; set; } + /// Unique code for this error + string Code { get; set; } + /// Child Inner Error, to allow Nesting. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError EmbeddedInnerError { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.json.cs new file mode 100644 index 000000000000..40bdd6a23a56 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerError.json.cs @@ -0,0 +1,105 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Inner Error + public partial class InnerError + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new InnerError(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal InnerError(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_additionalInfo = If( json?.PropertyT("additionalInfo"), out var __jsonAdditionalInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfo.FromJson(__jsonAdditionalInfo) : AdditionalInfo;} + {_code = If( json?.PropertyT("code"), out var __jsonCode) ? (string)__jsonCode : (string)Code;} + {_embeddedInnerError = If( json?.PropertyT("embeddedInnerError"), out var __jsonEmbeddedInnerError) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError.FromJson(__jsonEmbeddedInnerError) : EmbeddedInnerError;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._additionalInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._additionalInfo.ToJson(null,serializationMode) : null, "additionalInfo" ,container.Add ); + AddIf( null != (((object)this._code)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._code.ToString()) : null, "code" ,container.Add ); + AddIf( null != this._embeddedInnerError ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._embeddedInnerError.ToJson(null,serializationMode) : null, "embeddedInnerError" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.PowerShell.cs new file mode 100644 index 000000000000..fc8fa3db5585 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + [System.ComponentModel.TypeConverter(typeof(InnerErrorAdditionalInfoTypeConverter))] + public partial class InnerErrorAdditionalInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new InnerErrorAdditionalInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new InnerErrorAdditionalInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal InnerErrorAdditionalInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal InnerErrorAdditionalInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + [System.ComponentModel.TypeConverter(typeof(InnerErrorAdditionalInfoTypeConverter))] + public partial interface IInnerErrorAdditionalInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.TypeConverter.cs new file mode 100644 index 000000000000..cbe3e464fe75 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class InnerErrorAdditionalInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return InnerErrorAdditionalInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return InnerErrorAdditionalInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return InnerErrorAdditionalInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.cs new file mode 100644 index 000000000000..9a7a837b699d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.cs @@ -0,0 +1,32 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + public partial class InnerErrorAdditionalInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfoInternal + { + + /// Creates an new instance. + public InnerErrorAdditionalInfo() + { + + } + } + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + public partial interface IInnerErrorAdditionalInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + + } + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + internal partial interface IInnerErrorAdditionalInfoInternal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.dictionary.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.dictionary.cs new file mode 100644 index 000000000000..e486eeb62868 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.dictionary.cs @@ -0,0 +1,70 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class InnerErrorAdditionalInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + protected global::System.Collections.Generic.Dictionary __additionalProperties = new global::System.Collections.Generic.Dictionary(); + + global::System.Collections.Generic.IDictionary Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.AdditionalProperties { get => __additionalProperties; } + + int Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Count { get => __additionalProperties.Count; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Keys { get => __additionalProperties.Keys; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Values { get => __additionalProperties.Values; } + + public string this[global::System.String index] { get => __additionalProperties[index]; set => __additionalProperties[index] = value; } + + /// + /// + public void Add(global::System.String key, string value) => __additionalProperties.Add( key, value); + + public void Clear() => __additionalProperties.Clear(); + + /// + public bool ContainsKey(global::System.String key) => __additionalProperties.ContainsKey( key); + + /// + public void CopyFrom(global::System.Collections.IDictionary source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public void CopyFrom(global::System.Management.Automation.PSObject source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public bool Remove(global::System.String key) => __additionalProperties.Remove( key); + + /// + /// + public bool TryGetValue(global::System.String key, out string value) => __additionalProperties.TryGetValue( key, out value); + + /// + + public static implicit operator global::System.Collections.Generic.Dictionary(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorAdditionalInfo source) => source.__additionalProperties; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.json.cs new file mode 100644 index 000000000000..8bd20e1cc66a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/InnerErrorAdditionalInfo.json.cs @@ -0,0 +1,104 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Any Key value pairs that can be provided to the cleint for additional verbose information. + /// + public partial class InnerErrorAdditionalInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerErrorAdditionalInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new InnerErrorAdditionalInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + /// + internal InnerErrorAdditionalInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, global::System.Collections.Generic.HashSet exclusions = null) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson( json, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, null ,exclusions ); + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, container); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.PowerShell.cs new file mode 100644 index 000000000000..3c7b38cd4d0e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.PowerShell.cs @@ -0,0 +1,151 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Extended Information about the job + [System.ComponentModel.TypeConverter(typeof(JobExtendedInfoTypeConverter))] + public partial class JobExtendedInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new JobExtendedInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new JobExtendedInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal JobExtendedInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("SourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("TargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).AdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("AdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).AdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).BackupInstanceState = (string) content.GetValueForProperty("BackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).BackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).DataTransferedInByte = (double?) content.GetValueForProperty("DataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).DataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).RecoveryDestination = (string) content.GetValueForProperty("RecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).RecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("SubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal JobExtendedInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("SourceRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPoint = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails) content.GetValueForProperty("TargetRecoverPoint",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPoint, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).AdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) content.GetValueForProperty("AdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).AdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).BackupInstanceState = (string) content.GetValueForProperty("BackupInstanceState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).BackupInstanceState, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).DataTransferedInByte = (double?) content.GetValueForProperty("DataTransferedInByte",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).DataTransferedInByte, (__y)=> (double) global::System.Convert.ChangeType(__y, typeof(double))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).RecoveryDestination = (string) content.GetValueForProperty("RecoveryDestination",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).RecoveryDestination, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SubTask = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[]) content.GetValueForProperty("SubTask",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SubTask, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointId = (string) content.GetValueForProperty("SourceRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("SourceRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).SourceRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointId = (string) content.GetValueForProperty("TargetRecoverPointRecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("TargetRecoverPointRecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal)this).TargetRecoverPointRecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Extended Information about the job + [System.ComponentModel.TypeConverter(typeof(JobExtendedInfoTypeConverter))] + public partial interface IJobExtendedInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.TypeConverter.cs new file mode 100644 index 000000000000..e6ebc8a8509a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class JobExtendedInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return JobExtendedInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return JobExtendedInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return JobExtendedInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.cs new file mode 100644 index 000000000000..7dc17efbe758 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.cs @@ -0,0 +1,202 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Extended Information about the job + public partial class JobExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails _additionalDetail; + + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails AdditionalDetail { get => (this._additionalDetail = this._additionalDetail ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetails()); set => this._additionalDetail = value; } + + /// Backing field for property. + private string _backupInstanceState; + + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupInstanceState { get => this._backupInstanceState; } + + /// Backing field for property. + private double? _dataTransferedInByte; + + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public double? DataTransferedInByte { get => this._dataTransferedInByte; } + + /// Internal Acessors for BackupInstanceState + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.BackupInstanceState { get => this._backupInstanceState; set { {_backupInstanceState = value;} } } + + /// Internal Acessors for DataTransferedInByte + double? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.DataTransferedInByte { get => this._dataTransferedInByte; set { {_dataTransferedInByte = value;} } } + + /// Internal Acessors for RecoveryDestination + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.RecoveryDestination { get => this._recoveryDestination; set { {_recoveryDestination = value;} } } + + /// Internal Acessors for SourceRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.SourceRecoverPoint { get => (this._sourceRecoverPoint = this._sourceRecoverPoint ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails()); set { {_sourceRecoverPoint = value;} } } + + /// Internal Acessors for SubTask + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.SubTask { get => this._subTask; set { {_subTask = value;} } } + + /// Internal Acessors for TargetRecoverPoint + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoInternal.TargetRecoverPoint { get => (this._targetRecoverPoint = this._targetRecoverPoint ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails()); set { {_targetRecoverPoint = value;} } } + + /// Backing field for property. + private string _recoveryDestination; + + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryDestination { get => this._recoveryDestination; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails _sourceRecoverPoint; + + /// Details of the Source Recovery Point + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails SourceRecoverPoint { get => (this._sourceRecoverPoint = this._sourceRecoverPoint ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails()); } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)SourceRecoverPoint).RecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)SourceRecoverPoint).RecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? SourceRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)SourceRecoverPoint).RecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)SourceRecoverPoint).RecoveryPointTime = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] _subTask; + + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] SubTask { get => this._subTask; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails _targetRecoverPoint; + + /// Details of the Target Recovery Point + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails TargetRecoverPoint { get => (this._targetRecoverPoint = this._targetRecoverPoint ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails()); } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TargetRecoverPointRecoveryPointId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)TargetRecoverPoint).RecoveryPointId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)TargetRecoverPoint).RecoveryPointId = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? TargetRecoverPointRecoveryPointTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)TargetRecoverPoint).RecoveryPointTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)TargetRecoverPoint).RecoveryPointTime = value; } + + /// Creates an new instance. + public JobExtendedInfo() + { + + } + } + /// Extended Information about the job + public partial interface IJobExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Job's Additional Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Job's Additional Details", + SerializedName = @"additionalDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails AdditionalDetail { get; set; } + /// State of the Backup Instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"State of the Backup Instance", + SerializedName = @"backupInstanceState", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceState { get; } + /// Number of bytes transfered + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Number of bytes transfered", + SerializedName = @"dataTransferedInBytes", + PossibleTypes = new [] { typeof(double) })] + double? DataTransferedInByte { get; } + /// Destination where restore is done + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Destination where restore is done", + SerializedName = @"recoveryDestination", + PossibleTypes = new [] { typeof(string) })] + string RecoveryDestination { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string SourceRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// List of Sub Tasks of the job + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"List of Sub Tasks of the job", + SerializedName = @"subTasks", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] SubTask { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string TargetRecoverPointRecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + + } + /// Extended Information about the job + internal partial interface IJobExtendedInfoInternal + + { + /// Job's Additional Details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails AdditionalDetail { get; set; } + /// State of the Backup Instance + string BackupInstanceState { get; set; } + /// Number of bytes transfered + double? DataTransferedInByte { get; set; } + /// Destination where restore is done + string RecoveryDestination { get; set; } + /// Details of the Source Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails SourceRecoverPoint { get; set; } + + string SourceRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? SourceRecoverPointRecoveryPointTime { get; set; } + /// List of Sub Tasks of the job + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask[] SubTask { get; set; } + /// Details of the Target Recovery Point + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails TargetRecoverPoint { get; set; } + + string TargetRecoverPointRecoveryPointId { get; set; } + + global::System.DateTime? TargetRecoverPointRecoveryPointTime { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.json.cs new file mode 100644 index 000000000000..7742135d1135 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfo.json.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Extended Information about the job + public partial class JobExtendedInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new JobExtendedInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal JobExtendedInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_sourceRecoverPoint = If( json?.PropertyT("sourceRecoverPoint"), out var __jsonSourceRecoverPoint) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails.FromJson(__jsonSourceRecoverPoint) : SourceRecoverPoint;} + {_targetRecoverPoint = If( json?.PropertyT("targetRecoverPoint"), out var __jsonTargetRecoverPoint) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreJobRecoveryPointDetails.FromJson(__jsonTargetRecoverPoint) : TargetRecoverPoint;} + {_additionalDetail = If( json?.PropertyT("additionalDetails"), out var __jsonAdditionalDetails) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetails.FromJson(__jsonAdditionalDetails) : AdditionalDetail;} + {_backupInstanceState = If( json?.PropertyT("backupInstanceState"), out var __jsonBackupInstanceState) ? (string)__jsonBackupInstanceState : (string)BackupInstanceState;} + {_dataTransferedInByte = If( json?.PropertyT("dataTransferedInBytes"), out var __jsonDataTransferedInBytes) ? (double?)__jsonDataTransferedInBytes : DataTransferedInByte;} + {_recoveryDestination = If( json?.PropertyT("recoveryDestination"), out var __jsonRecoveryDestination) ? (string)__jsonRecoveryDestination : (string)RecoveryDestination;} + {_subTask = If( json?.PropertyT("subTasks"), out var __jsonSubTasks) ? If( __jsonSubTasks as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTask.FromJson(__u) )) ))() : null : SubTask;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._sourceRecoverPoint ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._sourceRecoverPoint.ToJson(null,serializationMode) : null, "sourceRecoverPoint" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._targetRecoverPoint ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._targetRecoverPoint.ToJson(null,serializationMode) : null, "targetRecoverPoint" ,container.Add ); + } + AddIf( null != this._additionalDetail ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._additionalDetail.ToJson(null,serializationMode) : null, "additionalDetails" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._backupInstanceState)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupInstanceState.ToString()) : null, "backupInstanceState" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._dataTransferedInByte ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNumber((double)this._dataTransferedInByte) : null, "dataTransferedInBytes" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._recoveryDestination)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryDestination.ToString()) : null, "recoveryDestination" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + if (null != this._subTask) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._subTask ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("subTasks",__w); + } + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.PowerShell.cs new file mode 100644 index 000000000000..dba67b96aab2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Job's Additional Details + [System.ComponentModel.TypeConverter(typeof(JobExtendedInfoAdditionalDetailsTypeConverter))] + public partial class JobExtendedInfoAdditionalDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new JobExtendedInfoAdditionalDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new JobExtendedInfoAdditionalDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal JobExtendedInfoAdditionalDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal JobExtendedInfoAdditionalDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Job's Additional Details + [System.ComponentModel.TypeConverter(typeof(JobExtendedInfoAdditionalDetailsTypeConverter))] + public partial interface IJobExtendedInfoAdditionalDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.TypeConverter.cs new file mode 100644 index 000000000000..4004ad30dbb0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class JobExtendedInfoAdditionalDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return JobExtendedInfoAdditionalDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return JobExtendedInfoAdditionalDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return JobExtendedInfoAdditionalDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.cs new file mode 100644 index 000000000000..be3cc2ecc3ff --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.cs @@ -0,0 +1,30 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Job's Additional Details + public partial class JobExtendedInfoAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetailsInternal + { + + /// Creates an new instance. + public JobExtendedInfoAdditionalDetails() + { + + } + } + /// Job's Additional Details + public partial interface IJobExtendedInfoAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + + } + /// Job's Additional Details + internal partial interface IJobExtendedInfoAdditionalDetailsInternal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.dictionary.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.dictionary.cs new file mode 100644 index 000000000000..5fc234882ba9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.dictionary.cs @@ -0,0 +1,70 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class JobExtendedInfoAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + protected global::System.Collections.Generic.Dictionary __additionalProperties = new global::System.Collections.Generic.Dictionary(); + + global::System.Collections.Generic.IDictionary Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.AdditionalProperties { get => __additionalProperties; } + + int Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Count { get => __additionalProperties.Count; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Keys { get => __additionalProperties.Keys; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Values { get => __additionalProperties.Values; } + + public string this[global::System.String index] { get => __additionalProperties[index]; set => __additionalProperties[index] = value; } + + /// + /// + public void Add(global::System.String key, string value) => __additionalProperties.Add( key, value); + + public void Clear() => __additionalProperties.Clear(); + + /// + public bool ContainsKey(global::System.String key) => __additionalProperties.ContainsKey( key); + + /// + public void CopyFrom(global::System.Collections.IDictionary source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public void CopyFrom(global::System.Management.Automation.PSObject source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public bool Remove(global::System.String key) => __additionalProperties.Remove( key); + + /// + /// + public bool TryGetValue(global::System.String key, out string value) => __additionalProperties.TryGetValue( key, out value); + + /// + + public static implicit operator global::System.Collections.Generic.Dictionary(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobExtendedInfoAdditionalDetails source) => source.__additionalProperties; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.json.cs new file mode 100644 index 000000000000..dce88c784d63 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobExtendedInfoAdditionalDetails.json.cs @@ -0,0 +1,102 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Job's Additional Details + public partial class JobExtendedInfoAdditionalDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobExtendedInfoAdditionalDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new JobExtendedInfoAdditionalDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + /// + internal JobExtendedInfoAdditionalDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, global::System.Collections.Generic.HashSet exclusions = null) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson( json, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, null ,exclusions ); + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, container); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.PowerShell.cs new file mode 100644 index 000000000000..c7b18c59b7b2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Details of Job's Sub Task + [System.ComponentModel.TypeConverter(typeof(JobSubTaskTypeConverter))] + public partial class JobSubTask + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new JobSubTask(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new JobSubTask(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal JobSubTask(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).AdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails) content.GetValueForProperty("AdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).AdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskId = (int) content.GetValueForProperty("TaskId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskId, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskName = (string) content.GetValueForProperty("TaskName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskProgress = (string) content.GetValueForProperty("TaskProgress",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskProgress, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskStatus = (string) content.GetValueForProperty("TaskStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskStatus, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal JobSubTask(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).AdditionalDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails) content.GetValueForProperty("AdditionalDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).AdditionalDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskId = (int) content.GetValueForProperty("TaskId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskId, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskName = (string) content.GetValueForProperty("TaskName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskProgress = (string) content.GetValueForProperty("TaskProgress",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskProgress, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskStatus = (string) content.GetValueForProperty("TaskStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal)this).TaskStatus, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Details of Job's Sub Task + [System.ComponentModel.TypeConverter(typeof(JobSubTaskTypeConverter))] + public partial interface IJobSubTask + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.TypeConverter.cs new file mode 100644 index 000000000000..b5a7c88a94e6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class JobSubTaskTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return JobSubTask.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return JobSubTask.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return JobSubTask.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.cs new file mode 100644 index 000000000000..2641b4b46292 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.cs @@ -0,0 +1,117 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Details of Job's Sub Task + public partial class JobSubTask : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails _additionalDetail; + + /// Sub Tasks's additional details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails AdditionalDetail { get => (this._additionalDetail = this._additionalDetail ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetails()); set => this._additionalDetail = value; } + + /// Internal Acessors for TaskProgress + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskInternal.TaskProgress { get => this._taskProgress; set { {_taskProgress = value;} } } + + /// Backing field for property. + private int _taskId; + + /// Task Id of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int TaskId { get => this._taskId; set => this._taskId = value; } + + /// Backing field for property. + private string _taskName; + + /// Name of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string TaskName { get => this._taskName; set => this._taskName = value; } + + /// Backing field for property. + private string _taskProgress; + + /// Progress of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string TaskProgress { get => this._taskProgress; } + + /// Backing field for property. + private string _taskStatus; + + /// Status of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string TaskStatus { get => this._taskStatus; set => this._taskStatus = value; } + + /// Creates an new instance. + public JobSubTask() + { + + } + } + /// Details of Job's Sub Task + public partial interface IJobSubTask : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Sub Tasks's additional details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Sub Tasks's additional details", + SerializedName = @"additionalDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails AdditionalDetail { get; set; } + /// Task Id of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Task Id of the Sub Task", + SerializedName = @"taskId", + PossibleTypes = new [] { typeof(int) })] + int TaskId { get; set; } + /// Name of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Name of the Sub Task", + SerializedName = @"taskName", + PossibleTypes = new [] { typeof(string) })] + string TaskName { get; set; } + /// Progress of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Progress of the Sub Task", + SerializedName = @"taskProgress", + PossibleTypes = new [] { typeof(string) })] + string TaskProgress { get; } + /// Status of the Sub Task + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Status of the Sub Task", + SerializedName = @"taskStatus", + PossibleTypes = new [] { typeof(string) })] + string TaskStatus { get; set; } + + } + /// Details of Job's Sub Task + internal partial interface IJobSubTaskInternal + + { + /// Sub Tasks's additional details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails AdditionalDetail { get; set; } + /// Task Id of the Sub Task + int TaskId { get; set; } + /// Name of the Sub Task + string TaskName { get; set; } + /// Progress of the Sub Task + string TaskProgress { get; set; } + /// Status of the Sub Task + string TaskStatus { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.json.cs new file mode 100644 index 000000000000..1d3bda43f993 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTask.json.cs @@ -0,0 +1,112 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Details of Job's Sub Task + public partial class JobSubTask + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTask FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new JobSubTask(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal JobSubTask(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_additionalDetail = If( json?.PropertyT("additionalDetails"), out var __jsonAdditionalDetails) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetails.FromJson(__jsonAdditionalDetails) : AdditionalDetail;} + {_taskId = If( json?.PropertyT("taskId"), out var __jsonTaskId) ? (int)__jsonTaskId : TaskId;} + {_taskName = If( json?.PropertyT("taskName"), out var __jsonTaskName) ? (string)__jsonTaskName : (string)TaskName;} + {_taskProgress = If( json?.PropertyT("taskProgress"), out var __jsonTaskProgress) ? (string)__jsonTaskProgress : (string)TaskProgress;} + {_taskStatus = If( json?.PropertyT("taskStatus"), out var __jsonTaskStatus) ? (string)__jsonTaskStatus : (string)TaskStatus;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._additionalDetail ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._additionalDetail.ToJson(null,serializationMode) : null, "additionalDetails" ,container.Add ); + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNumber(this._taskId), "taskId" ,container.Add ); + AddIf( null != (((object)this._taskName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._taskName.ToString()) : null, "taskName" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._taskProgress)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._taskProgress.ToString()) : null, "taskProgress" ,container.Add ); + } + AddIf( null != (((object)this._taskStatus)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._taskStatus.ToString()) : null, "taskStatus" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.PowerShell.cs new file mode 100644 index 000000000000..cb76c210e7e6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Sub Tasks's additional details + [System.ComponentModel.TypeConverter(typeof(JobSubTaskAdditionalDetailsTypeConverter))] + public partial class JobSubTaskAdditionalDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new JobSubTaskAdditionalDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new JobSubTaskAdditionalDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal JobSubTaskAdditionalDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal JobSubTaskAdditionalDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Sub Tasks's additional details + [System.ComponentModel.TypeConverter(typeof(JobSubTaskAdditionalDetailsTypeConverter))] + public partial interface IJobSubTaskAdditionalDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.TypeConverter.cs new file mode 100644 index 000000000000..c98a2f8cda58 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class JobSubTaskAdditionalDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return JobSubTaskAdditionalDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return JobSubTaskAdditionalDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return JobSubTaskAdditionalDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.cs new file mode 100644 index 000000000000..602549f4b7dd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.cs @@ -0,0 +1,30 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Sub Tasks's additional details + public partial class JobSubTaskAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetailsInternal + { + + /// Creates an new instance. + public JobSubTaskAdditionalDetails() + { + + } + } + /// Sub Tasks's additional details + public partial interface IJobSubTaskAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + + } + /// Sub Tasks's additional details + internal partial interface IJobSubTaskAdditionalDetailsInternal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.dictionary.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.dictionary.cs new file mode 100644 index 000000000000..442a8eab6c15 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.dictionary.cs @@ -0,0 +1,70 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class JobSubTaskAdditionalDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + protected global::System.Collections.Generic.Dictionary __additionalProperties = new global::System.Collections.Generic.Dictionary(); + + global::System.Collections.Generic.IDictionary Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.AdditionalProperties { get => __additionalProperties; } + + int Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Count { get => __additionalProperties.Count; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Keys { get => __additionalProperties.Keys; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Values { get => __additionalProperties.Values; } + + public string this[global::System.String index] { get => __additionalProperties[index]; set => __additionalProperties[index] = value; } + + /// + /// + public void Add(global::System.String key, string value) => __additionalProperties.Add( key, value); + + public void Clear() => __additionalProperties.Clear(); + + /// + public bool ContainsKey(global::System.String key) => __additionalProperties.ContainsKey( key); + + /// + public void CopyFrom(global::System.Collections.IDictionary source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public void CopyFrom(global::System.Management.Automation.PSObject source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public bool Remove(global::System.String key) => __additionalProperties.Remove( key); + + /// + /// + public bool TryGetValue(global::System.String key, out string value) => __additionalProperties.TryGetValue( key, out value); + + /// + + public static implicit operator global::System.Collections.Generic.Dictionary(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.JobSubTaskAdditionalDetails source) => source.__additionalProperties; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.json.cs new file mode 100644 index 000000000000..63b1618422b1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/JobSubTaskAdditionalDetails.json.cs @@ -0,0 +1,102 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Sub Tasks's additional details + public partial class JobSubTaskAdditionalDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IJobSubTaskAdditionalDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new JobSubTaskAdditionalDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + /// + internal JobSubTaskAdditionalDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, global::System.Collections.Generic.HashSet exclusions = null) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson( json, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, null ,exclusions ); + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, container); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.PowerShell.cs new file mode 100644 index 000000000000..0605b24701f5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Operation Extended Info + [System.ComponentModel.TypeConverter(typeof(OperationExtendedInfoTypeConverter))] + public partial class OperationExtendedInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new OperationExtendedInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new OperationExtendedInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal OperationExtendedInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal OperationExtendedInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Operation Extended Info + [System.ComponentModel.TypeConverter(typeof(OperationExtendedInfoTypeConverter))] + public partial interface IOperationExtendedInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.TypeConverter.cs new file mode 100644 index 000000000000..bdd26429c4f1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class OperationExtendedInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return OperationExtendedInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return OperationExtendedInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return OperationExtendedInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.cs new file mode 100644 index 000000000000..48eee3f2f343 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.cs @@ -0,0 +1,52 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Extended Info + public partial class OperationExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal + { + + /// Backing field for property. + private string _objectType; + + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public OperationExtendedInfo() + { + + } + } + /// Operation Extended Info + public partial interface IOperationExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types.", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Operation Extended Info + internal partial interface IOperationExtendedInfoInternal + + { + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.json.cs new file mode 100644 index 000000000000..d006a36c66fa --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationExtendedInfo.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Extended Info + public partial class OperationExtendedInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new OperationExtendedInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal OperationExtendedInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.PowerShell.cs new file mode 100644 index 000000000000..54ddb1ee66ae --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Operation Job Extended Info + [System.ComponentModel.TypeConverter(typeof(OperationJobExtendedInfoTypeConverter))] + public partial class OperationJobExtendedInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new OperationJobExtendedInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new OperationJobExtendedInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal OperationJobExtendedInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfoInternal)this).JobId = (string) content.GetValueForProperty("JobId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfoInternal)this).JobId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal OperationJobExtendedInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfoInternal)this).JobId = (string) content.GetValueForProperty("JobId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfoInternal)this).JobId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Operation Job Extended Info + [System.ComponentModel.TypeConverter(typeof(OperationJobExtendedInfoTypeConverter))] + public partial interface IOperationJobExtendedInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.TypeConverter.cs new file mode 100644 index 000000000000..b549b31e992a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class OperationJobExtendedInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return OperationJobExtendedInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return OperationJobExtendedInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return OperationJobExtendedInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.cs new file mode 100644 index 000000000000..7cd0fd8eb1ce --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Job Extended Info + public partial class OperationJobExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfoInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo __operationExtendedInfo = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo(); + + /// Backing field for property. + private string _jobId; + + /// Arm Id of the job created for this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string JobId { get => this._jobId; set => this._jobId = value; } + + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)__operationExtendedInfo).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)__operationExtendedInfo).ObjectType = value; } + + /// Creates an new instance. + public OperationJobExtendedInfo() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__operationExtendedInfo), __operationExtendedInfo); + await eventListener.AssertObjectIsValid(nameof(__operationExtendedInfo), __operationExtendedInfo); + } + } + /// Operation Job Extended Info + public partial interface IOperationJobExtendedInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo + { + /// Arm Id of the job created for this operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Arm Id of the job created for this operation.", + SerializedName = @"jobId", + PossibleTypes = new [] { typeof(string) })] + string JobId { get; set; } + + } + /// Operation Job Extended Info + internal partial interface IOperationJobExtendedInfoInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal + { + /// Arm Id of the job created for this operation. + string JobId { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.json.cs new file mode 100644 index 000000000000..709037a663d9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationJobExtendedInfo.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Job Extended Info + public partial class OperationJobExtendedInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationJobExtendedInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new OperationJobExtendedInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal OperationJobExtendedInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __operationExtendedInfo = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo(json); + {_jobId = If( json?.PropertyT("jobId"), out var __jsonJobId) ? (string)__jsonJobId : (string)JobId;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __operationExtendedInfo?.ToJson(container, serializationMode); + AddIf( null != (((object)this._jobId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._jobId.ToString()) : null, "jobId" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.PowerShell.cs new file mode 100644 index 000000000000..0d595206e8b5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.PowerShell.cs @@ -0,0 +1,157 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Operation Resource + [System.ComponentModel.TypeConverter(typeof(OperationResourceTypeConverter))] + public partial class OperationResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new OperationResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new OperationResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal OperationResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Error = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) content.GetValueForProperty("Error",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Error, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).StartTime = (global::System.DateTime?) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal OperationResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Error = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) content.GetValueForProperty("Error",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Error, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfoTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).EndTime = (global::System.DateTime?) content.GetValueForProperty("EndTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).EndTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).StartTime = (global::System.DateTime?) content.GetValueForProperty("StartTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).StartTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Status = (string) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Status, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).AdditionalInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[]) content.GetValueForProperty("AdditionalInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).AdditionalInfo, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorAdditionalInfo1TypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ErrorTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Operation Resource + [System.ComponentModel.TypeConverter(typeof(OperationResourceTypeConverter))] + public partial interface IOperationResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.TypeConverter.cs new file mode 100644 index 000000000000..1e048f5ddb27 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class OperationResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return OperationResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return OperationResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return OperationResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.cs new file mode 100644 index 000000000000..478346afcb32 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.cs @@ -0,0 +1,256 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Resource + public partial class OperationResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal + { + + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo; } + + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Code { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code; } + + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail; } + + /// Backing field for property. + private global::System.DateTime? _endTime; + + /// End time of the operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? EndTime { get => this._endTime; set => this._endTime = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError _error; + + /// + /// Required if status == failed or status == canceled. This is the OData v4 error format, used by the RPC and will go into + /// the v2.2 Azure REST API guidelines. + /// The full set of optional properties (e.g. inner errors / details) can be found in the "Error Response" section. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Error { get => (this._error = this._error ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error()); set => this._error = value; } + + /// Backing field for property. + private string _id; + + /// It should match what is used to GET the operation result + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; set => this._id = value; } + + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Message { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message; } + + /// Internal Acessors for AdditionalInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.AdditionalInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).AdditionalInfo = value; } + + /// Internal Acessors for Code + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Code { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Code = value; } + + /// Internal Acessors for Detail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Detail { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Detail = value; } + + /// Internal Acessors for Error + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Error { get => (this._error = this._error ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error()); set { {_error = value;} } } + + /// Internal Acessors for Message + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Message { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Message = value; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo()); set { {_property = value;} } } + + /// Internal Acessors for Target + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResourceInternal.Target { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target = value; } + + /// Backing field for property. + private string _name; + + /// + /// It must match the last segment of the "id" field, and will typically be a GUID / system generated value + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)Property).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfoInternal)Property).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo _property; + + /// End time of the operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo()); set => this._property = value; } + + /// Backing field for property. + private global::System.DateTime? _startTime; + + /// Start time of the operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? StartTime { get => this._startTime; set => this._startTime = value; } + + /// Backing field for property. + private string _status; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Status { get => this._status; set => this._status = value; } + + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string Target { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorInternal)Error).Target; } + + /// Creates an new instance. + public OperationResource() + { + + } + } + /// Operation Resource + public partial interface IOperationResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// The error additional info. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error additional info.", + SerializedName = @"additionalInfo", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; } + /// The error code. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error code.", + SerializedName = @"code", + PossibleTypes = new [] { typeof(string) })] + string Code { get; } + /// The error details. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error details.", + SerializedName = @"details", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; } + /// End time of the operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"End time of the operation", + SerializedName = @"endTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? EndTime { get; set; } + /// It should match what is used to GET the operation result + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"It should match what is used to GET the operation result", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; set; } + /// The error message. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error message.", + SerializedName = @"message", + PossibleTypes = new [] { typeof(string) })] + string Message { get; } + /// + /// It must match the last segment of the "id" field, and will typically be a GUID / system generated value + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"It must match the last segment of the ""id"" field, and will typically be a GUID / system generated value", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + string Name { get; set; } + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types.", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// Start time of the operation + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Start time of the operation", + SerializedName = @"startTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? StartTime { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"status", + PossibleTypes = new [] { typeof(string) })] + string Status { get; set; } + /// The error target. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The error target.", + SerializedName = @"target", + PossibleTypes = new [] { typeof(string) })] + string Target { get; } + + } + /// Operation Resource + internal partial interface IOperationResourceInternal + + { + /// The error additional info. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IErrorAdditionalInfo1[] AdditionalInfo { get; set; } + /// The error code. + string Code { get; set; } + /// The error details. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError[] Detail { get; set; } + /// End time of the operation + global::System.DateTime? EndTime { get; set; } + /// + /// Required if status == failed or status == canceled. This is the OData v4 error format, used by the RPC and will go into + /// the v2.2 Azure REST API guidelines. + /// The full set of optional properties (e.g. inner errors / details) can be found in the "Error Response" section. + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IError Error { get; set; } + /// It should match what is used to GET the operation result + string Id { get; set; } + /// The error message. + string Message { get; set; } + /// + /// It must match the last segment of the "id" field, and will typically be a GUID / system generated value + /// + string Name { get; set; } + /// + /// This property will be used as the discriminator for deciding the specific types in the polymorphic chain of types. + /// + string ObjectType { get; set; } + /// End time of the operation + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationExtendedInfo Property { get; set; } + /// Start time of the operation + global::System.DateTime? StartTime { get; set; } + + string Status { get; set; } + /// The error target. + string Target { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.json.cs new file mode 100644 index 000000000000..dd557ad0a2be --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/OperationResource.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Operation Resource + public partial class OperationResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new OperationResource(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal OperationResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_error = If( json?.PropertyT("error"), out var __jsonError) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Error.FromJson(__jsonError) : Error;} + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.OperationExtendedInfo.FromJson(__jsonProperties) : Property;} + {_name = If( json?.PropertyT("name"), out var __jsonName) ? (string)__jsonName : (string)Name;} + {_endTime = If( json?.PropertyT("endTime"), out var __jsonEndTime) ? global::System.DateTime.TryParse((string)__jsonEndTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonEndTimeValue) ? __jsonEndTimeValue : EndTime : EndTime;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + {_startTime = If( json?.PropertyT("startTime"), out var __jsonStartTime) ? global::System.DateTime.TryParse((string)__jsonStartTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonStartTimeValue) ? __jsonStartTimeValue : StartTime : StartTime;} + {_status = If( json?.PropertyT("status"), out var __jsonStatus) ? (string)__jsonStatus : (string)Status;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._error ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._error.ToJson(null,serializationMode) : null, "error" ,container.Add ); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AddIf( null != (((object)this._name)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._name.ToString()) : null, "name" ,container.Add ); + AddIf( null != this._endTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._endTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "endTime" ,container.Add ); + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + AddIf( null != this._startTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._startTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "startTime" ,container.Add ); + AddIf( null != (((object)this._status)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._status.ToString()) : null, "status" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.PowerShell.cs new file mode 100644 index 000000000000..9c54169adc76 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Patch Request content for Microsoft.DataProtection resources + [System.ComponentModel.TypeConverter(typeof(PatchResourceRequestInputTypeConverter))] + public partial class PatchResourceRequestInput + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new PatchResourceRequestInput(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new PatchResourceRequestInput(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal PatchResourceRequestInput(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityTenantId, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal PatchResourceRequestInput(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal)this).IdentityTenantId, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Patch Request content for Microsoft.DataProtection resources + [System.ComponentModel.TypeConverter(typeof(PatchResourceRequestInputTypeConverter))] + public partial interface IPatchResourceRequestInput + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.TypeConverter.cs new file mode 100644 index 000000000000..ee2ac559cd4d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class PatchResourceRequestInputTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return PatchResourceRequestInput.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return PatchResourceRequestInput.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return PatchResourceRequestInput.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.cs new file mode 100644 index 000000000000..892687613943 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.cs @@ -0,0 +1,138 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Patch Request content for Microsoft.DataProtection resources + public partial class PatchResourceRequestInput : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails _identity; + + /// Input Managed Identity Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get => (this._identity = this._identity ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails()); set => this._identity = value; } + + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId; } + + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId; } + + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).Type = value; } + + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl; } + + /// Internal Acessors for Identity + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal.Identity { get => (this._identity = this._identity ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails()); set { {_identity = value;} } } + + /// Internal Acessors for IdentityPrincipalId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal.IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).PrincipalId = value; } + + /// Internal Acessors for IdentityTenantId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal.IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).TenantId = value; } + + /// Internal Acessors for IdentityUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputInternal.IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetailsInternal)Identity).IdentityUrl = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags _tag; + + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get => (this._tag = this._tag ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTags()); set => this._tag = value; } + + /// Creates an new instance. + public PatchResourceRequestInput() + { + + } + } + /// Patch Request content for Microsoft.DataProtection resources + public partial interface IPatchResourceRequestInput : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure resource.", + SerializedName = @"principalId", + PossibleTypes = new [] { typeof(string) })] + string IdentityPrincipalId { get; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member.", + SerializedName = @"tenantId", + PossibleTypes = new [] { typeof(string) })] + string IdentityTenantId { get; } + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string IdentityType { get; set; } + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Identity Url", + SerializedName = @"identityUrl", + PossibleTypes = new [] { typeof(string) })] + string IdentityUrl { get; } + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get; set; } + + } + /// Patch Request content for Microsoft.DataProtection resources + internal partial interface IPatchResourceRequestInputInternal + + { + /// Input Managed Identity Details + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get; set; } + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + string IdentityPrincipalId { get; set; } + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + string IdentityTenantId { get; set; } + /// The identityType which can be either SystemAssigned or None + string IdentityType { get; set; } + /// Identity Url + string IdentityUrl { get; set; } + /// Resource tags. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.json.cs new file mode 100644 index 000000000000..588992f8c62c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInput.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Patch Request content for Microsoft.DataProtection resources + public partial class PatchResourceRequestInput + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new PatchResourceRequestInput(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal PatchResourceRequestInput(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_identity = If( json?.PropertyT("identity"), out var __jsonIdentity) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetails.FromJson(__jsonIdentity) : Identity;} + {_tag = If( json?.PropertyT("tags"), out var __jsonTags) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTags.FromJson(__jsonTags) : Tag;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._identity ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._identity.ToJson(null,serializationMode) : null, "identity" ,container.Add ); + AddIf( null != this._tag ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._tag.ToJson(null,serializationMode) : null, "tags" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.PowerShell.cs new file mode 100644 index 000000000000..ca2cbf37f682 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Resource tags. + [System.ComponentModel.TypeConverter(typeof(PatchResourceRequestInputTagsTypeConverter))] + public partial class PatchResourceRequestInputTags + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new PatchResourceRequestInputTags(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new PatchResourceRequestInputTags(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal PatchResourceRequestInputTags(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal PatchResourceRequestInputTags(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + // this type is a dictionary; copy elements from source to here. + CopyFrom(content); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Resource tags. + [System.ComponentModel.TypeConverter(typeof(PatchResourceRequestInputTagsTypeConverter))] + public partial interface IPatchResourceRequestInputTags + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.TypeConverter.cs new file mode 100644 index 000000000000..80224faf1818 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class PatchResourceRequestInputTagsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return PatchResourceRequestInputTags.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return PatchResourceRequestInputTags.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return PatchResourceRequestInputTags.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.cs new file mode 100644 index 000000000000..60a8d9305882 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.cs @@ -0,0 +1,30 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource tags. + public partial class PatchResourceRequestInputTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTagsInternal + { + + /// Creates an new instance. + public PatchResourceRequestInputTags() + { + + } + } + /// Resource tags. + public partial interface IPatchResourceRequestInputTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + + } + /// Resource tags. + internal partial interface IPatchResourceRequestInputTagsInternal + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.dictionary.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.dictionary.cs new file mode 100644 index 000000000000..557b9de272cb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.dictionary.cs @@ -0,0 +1,70 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class PatchResourceRequestInputTags : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray + { + protected global::System.Collections.Generic.Dictionary __additionalProperties = new global::System.Collections.Generic.Dictionary(); + + global::System.Collections.Generic.IDictionary Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.AdditionalProperties { get => __additionalProperties; } + + int Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Count { get => __additionalProperties.Count; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Keys { get => __additionalProperties.Keys; } + + global::System.Collections.Generic.IEnumerable Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray.Values { get => __additionalProperties.Values; } + + public string this[global::System.String index] { get => __additionalProperties[index]; set => __additionalProperties[index] = value; } + + /// + /// + public void Add(global::System.String key, string value) => __additionalProperties.Add( key, value); + + public void Clear() => __additionalProperties.Clear(); + + /// + public bool ContainsKey(global::System.String key) => __additionalProperties.ContainsKey( key); + + /// + public void CopyFrom(global::System.Collections.IDictionary source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public void CopyFrom(global::System.Management.Automation.PSObject source) + { + if (null != source) + { + foreach( var property in Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.TypeConverterExtensions.GetFilteredProperties(source, new global::System.Collections.Generic.HashSet() { } ) ) + { + if ((null != property.Key && null != property.Value)) + { + this.__additionalProperties.Add(property.Key.ToString(), global::System.Management.Automation.LanguagePrimitives.ConvertTo( property.Value)); + } + } + } + } + + /// + public bool Remove(global::System.String key) => __additionalProperties.Remove( key); + + /// + /// + public bool TryGetValue(global::System.String key, out string value) => __additionalProperties.TryGetValue( key, out value); + + /// + + public static implicit operator global::System.Collections.Generic.Dictionary(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInputTags source) => source.__additionalProperties; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.json.cs new file mode 100644 index 000000000000..ca1c242aef12 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PatchResourceRequestInputTags.json.cs @@ -0,0 +1,102 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Resource tags. + public partial class PatchResourceRequestInputTags + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new PatchResourceRequestInputTags(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + /// + internal PatchResourceRequestInputTags(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, global::System.Collections.Generic.HashSet exclusions = null) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson( json, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, null ,exclusions ); + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IAssociativeArray)this).AdditionalProperties, container); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.PowerShell.cs new file mode 100644 index 000000000000..8e22b954d82c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Policy Info in backupInstance + [System.ComponentModel.TypeConverter(typeof(PolicyInfoTypeConverter))] + public partial class PolicyInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new PolicyInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new PolicyInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal PolicyInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyVersion = (string) content.GetValueForProperty("PolicyVersion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyVersion, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal PolicyInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyId = (string) content.GetValueForProperty("PolicyId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyVersion = (string) content.GetValueForProperty("PolicyVersion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal)this).PolicyVersion, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Policy Info in backupInstance + [System.ComponentModel.TypeConverter(typeof(PolicyInfoTypeConverter))] + public partial interface IPolicyInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.TypeConverter.cs new file mode 100644 index 000000000000..5f4d2f69b5e1 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class PolicyInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return PolicyInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return PolicyInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return PolicyInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.cs new file mode 100644 index 000000000000..821e7e1afe0f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.cs @@ -0,0 +1,62 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Policy Info in backupInstance + public partial class PolicyInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal + { + + /// Internal Acessors for PolicyVersion + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfoInternal.PolicyVersion { get => this._policyVersion; set { {_policyVersion = value;} } } + + /// Backing field for property. + private string _policyId; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string PolicyId { get => this._policyId; set => this._policyId = value; } + + /// Backing field for property. + private string _policyVersion; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string PolicyVersion { get => this._policyVersion; } + + /// Creates an new instance. + public PolicyInfo() + { + + } + } + /// Policy Info in backupInstance + public partial interface IPolicyInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"policyId", + PossibleTypes = new [] { typeof(string) })] + string PolicyId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"", + SerializedName = @"policyVersion", + PossibleTypes = new [] { typeof(string) })] + string PolicyVersion { get; } + + } + /// Policy Info in backupInstance + internal partial interface IPolicyInfoInternal + + { + string PolicyId { get; set; } + + string PolicyVersion { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.json.cs new file mode 100644 index 000000000000..e723c7814653 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/PolicyInfo.json.cs @@ -0,0 +1,106 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Policy Info in backupInstance + public partial class PolicyInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPolicyInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new PolicyInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal PolicyInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_policyId = If( json?.PropertyT("policyId"), out var __jsonPolicyId) ? (string)__jsonPolicyId : (string)PolicyId;} + {_policyVersion = If( json?.PropertyT("policyVersion"), out var __jsonPolicyVersion) ? (string)__jsonPolicyVersion : (string)PolicyVersion;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._policyId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._policyId.ToString()) : null, "policyId" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._policyVersion)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._policyVersion.ToString()) : null, "policyVersion" ,container.Add ); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.PowerShell.cs new file mode 100644 index 000000000000..6268231f1b16 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Protection status details + [System.ComponentModel.TypeConverter(typeof(ProtectionStatusDetailsTypeConverter))] + public partial class ProtectionStatusDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ProtectionStatusDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ProtectionStatusDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ProtectionStatusDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).ErrorDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).Status = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status?) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).Status, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status.CreateFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ProtectionStatusDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).ErrorDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) content.GetValueForProperty("ErrorDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).ErrorDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).Status = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status?) content.GetValueForProperty("Status",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal)this).Status, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status.CreateFrom); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Protection status details + [System.ComponentModel.TypeConverter(typeof(ProtectionStatusDetailsTypeConverter))] + public partial interface IProtectionStatusDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.TypeConverter.cs new file mode 100644 index 000000000000..324500b152ab --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ProtectionStatusDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ProtectionStatusDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ProtectionStatusDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ProtectionStatusDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.cs new file mode 100644 index 000000000000..8df662377e82 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Protection status details + public partial class ProtectionStatusDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetailsInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError _errorDetail; + + /// Specifies the protection status error of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError ErrorDetail { get => (this._errorDetail = this._errorDetail ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError()); set => this._errorDetail = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status? _status; + + /// Specifies the protection status of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status? Status { get => this._status; set => this._status = value; } + + /// Creates an new instance. + public ProtectionStatusDetails() + { + + } + } + /// Protection status details + public partial interface IProtectionStatusDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Specifies the protection status error of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Specifies the protection status error of the resource", + SerializedName = @"errorDetails", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError ErrorDetail { get; set; } + /// Specifies the protection status of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Specifies the protection status of the resource", + SerializedName = @"status", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status? Status { get; set; } + + } + /// Protection status details + internal partial interface IProtectionStatusDetailsInternal + + { + /// Specifies the protection status error of the resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError ErrorDetail { get; set; } + /// Specifies the protection status of the resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status? Status { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.json.cs new file mode 100644 index 000000000000..427f60679fd8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ProtectionStatusDetails.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Protection status details + public partial class ProtectionStatusDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IProtectionStatusDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ProtectionStatusDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ProtectionStatusDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_errorDetail = If( json?.PropertyT("errorDetails"), out var __jsonErrorDetails) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError.FromJson(__jsonErrorDetails) : ErrorDetail;} + {_status = If( json?.PropertyT("status"), out var __jsonStatus) ? (string)__jsonStatus : (string)Status;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._errorDetail ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._errorDetail.ToJson(null,serializationMode) : null, "errorDetails" ,container.Add ); + AddIf( null != (((object)this._status)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._status.ToString()) : null, "status" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.PowerShell.cs new file mode 100644 index 000000000000..650402409392 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.PowerShell.cs @@ -0,0 +1,149 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// RecoveryPoint datastore details + [System.ComponentModel.TypeConverter(typeof(RecoveryPointDataStoreDetailsTypeConverter))] + public partial class RecoveryPointDataStoreDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RecoveryPointDataStoreDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RecoveryPointDataStoreDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RecoveryPointDataStoreDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).CreationTime = (global::System.DateTime?) content.GetValueForProperty("CreationTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).CreationTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).ExpiryTime = (global::System.DateTime?) content.GetValueForProperty("ExpiryTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).ExpiryTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).MetaData = (string) content.GetValueForProperty("MetaData",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).MetaData, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationExpiryTime = (global::System.DateTime?) content.GetValueForProperty("RehydrationExpiryTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationExpiryTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationStatus = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus?) content.GetValueForProperty("RehydrationStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationStatus, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).State = (string) content.GetValueForProperty("State",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).State, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Visible = (bool?) content.GetValueForProperty("Visible",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Visible, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RecoveryPointDataStoreDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).CreationTime = (global::System.DateTime?) content.GetValueForProperty("CreationTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).CreationTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).ExpiryTime = (global::System.DateTime?) content.GetValueForProperty("ExpiryTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).ExpiryTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).MetaData = (string) content.GetValueForProperty("MetaData",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).MetaData, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationExpiryTime = (global::System.DateTime?) content.GetValueForProperty("RehydrationExpiryTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationExpiryTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationStatus = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus?) content.GetValueForProperty("RehydrationStatus",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).RehydrationStatus, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).State = (string) content.GetValueForProperty("State",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).State, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Visible = (bool?) content.GetValueForProperty("Visible",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal)this).Visible, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// RecoveryPoint datastore details + [System.ComponentModel.TypeConverter(typeof(RecoveryPointDataStoreDetailsTypeConverter))] + public partial interface IRecoveryPointDataStoreDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.TypeConverter.cs new file mode 100644 index 000000000000..994f06acaeae --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RecoveryPointDataStoreDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RecoveryPointDataStoreDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RecoveryPointDataStoreDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RecoveryPointDataStoreDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.cs new file mode 100644 index 000000000000..3d6a92a00bf9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.cs @@ -0,0 +1,177 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// RecoveryPoint datastore details + public partial class RecoveryPointDataStoreDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal + { + + /// Backing field for property. + private global::System.DateTime? _creationTime; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? CreationTime { get => this._creationTime; set => this._creationTime = value; } + + /// Backing field for property. + private global::System.DateTime? _expiryTime; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? ExpiryTime { get => this._expiryTime; set => this._expiryTime = value; } + + /// Backing field for property. + private string _id; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; set => this._id = value; } + + /// Backing field for property. + private string _metaData; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string MetaData { get => this._metaData; set => this._metaData = value; } + + /// Internal Acessors for RehydrationExpiryTime + global::System.DateTime? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal.RehydrationExpiryTime { get => this._rehydrationExpiryTime; set { {_rehydrationExpiryTime = value;} } } + + /// Internal Acessors for RehydrationStatus + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetailsInternal.RehydrationStatus { get => this._rehydrationStatus; set { {_rehydrationStatus = value;} } } + + /// Backing field for property. + private global::System.DateTime? _rehydrationExpiryTime; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? RehydrationExpiryTime { get => this._rehydrationExpiryTime; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus? _rehydrationStatus; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus? RehydrationStatus { get => this._rehydrationStatus; } + + /// Backing field for property. + private string _state; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string State { get => this._state; set => this._state = value; } + + /// Backing field for property. + private string _type; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Type { get => this._type; set => this._type = value; } + + /// Backing field for property. + private bool? _visible; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? Visible { get => this._visible; set => this._visible = value; } + + /// Creates an new instance. + public RecoveryPointDataStoreDetails() + { + + } + } + /// RecoveryPoint datastore details + public partial interface IRecoveryPointDataStoreDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"creationTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? CreationTime { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"expiryTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? ExpiryTime { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"metaData", + PossibleTypes = new [] { typeof(string) })] + string MetaData { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"", + SerializedName = @"rehydrationExpiryTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? RehydrationExpiryTime { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"", + SerializedName = @"rehydrationStatus", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus? RehydrationStatus { get; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"state", + PossibleTypes = new [] { typeof(string) })] + string State { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + string Type { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"visible", + PossibleTypes = new [] { typeof(bool) })] + bool? Visible { get; set; } + + } + /// RecoveryPoint datastore details + internal partial interface IRecoveryPointDataStoreDetailsInternal + + { + global::System.DateTime? CreationTime { get; set; } + + global::System.DateTime? ExpiryTime { get; set; } + + string Id { get; set; } + + string MetaData { get; set; } + + global::System.DateTime? RehydrationExpiryTime { get; set; } + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus? RehydrationStatus { get; set; } + + string State { get; set; } + + string Type { get; set; } + + bool? Visible { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.json.cs new file mode 100644 index 000000000000..9e3cc74f1a46 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RecoveryPointDataStoreDetails.json.cs @@ -0,0 +1,123 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// RecoveryPoint datastore details + public partial class RecoveryPointDataStoreDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRecoveryPointDataStoreDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new RecoveryPointDataStoreDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RecoveryPointDataStoreDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + {_creationTime = If( json?.PropertyT("creationTime"), out var __jsonCreationTime) ? global::System.DateTime.TryParse((string)__jsonCreationTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonCreationTimeValue) ? __jsonCreationTimeValue : CreationTime : CreationTime;} + {_expiryTime = If( json?.PropertyT("expiryTime"), out var __jsonExpiryTime) ? global::System.DateTime.TryParse((string)__jsonExpiryTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonExpiryTimeValue) ? __jsonExpiryTimeValue : ExpiryTime : ExpiryTime;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + {_metaData = If( json?.PropertyT("metaData"), out var __jsonMetaData) ? (string)__jsonMetaData : (string)MetaData;} + {_rehydrationExpiryTime = If( json?.PropertyT("rehydrationExpiryTime"), out var __jsonRehydrationExpiryTime) ? global::System.DateTime.TryParse((string)__jsonRehydrationExpiryTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonRehydrationExpiryTimeValue) ? __jsonRehydrationExpiryTimeValue : RehydrationExpiryTime : RehydrationExpiryTime;} + {_rehydrationStatus = If( json?.PropertyT("rehydrationStatus"), out var __jsonRehydrationStatus) ? (string)__jsonRehydrationStatus : (string)RehydrationStatus;} + {_state = If( json?.PropertyT("state"), out var __jsonState) ? (string)__jsonState : (string)State;} + {_visible = If( json?.PropertyT("visible"), out var __jsonVisible) ? (bool?)__jsonVisible : Visible;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + AddIf( null != this._creationTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._creationTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "creationTime" ,container.Add ); + AddIf( null != this._expiryTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._expiryTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "expiryTime" ,container.Add ); + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + AddIf( null != (((object)this._metaData)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._metaData.ToString()) : null, "metaData" ,container.Add ); + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._rehydrationExpiryTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationExpiryTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "rehydrationExpiryTime" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._rehydrationStatus)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._rehydrationStatus.ToString()) : null, "rehydrationStatus" ,container.Add ); + } + AddIf( null != (((object)this._state)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._state.ToString()) : null, "state" ,container.Add ); + AddIf( null != this._visible ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._visible) : null, "visible" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.PowerShell.cs new file mode 100644 index 000000000000..2b3ba39b78fb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// GateKeeper for resource operations + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperTypeConverter))] + public partial class ResourceOperationGateKeeper + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ResourceOperationGateKeeper(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ResourceOperationGateKeeper(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ResourceOperationGateKeeper(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).LastLockUpdateTime = (global::System.DateTime?) content.GetValueForProperty("LastLockUpdateTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).LastLockUpdateTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).Operation = (string[]) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).Operation, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ResourceOperationGateKeeper(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).LastLockUpdateTime = (global::System.DateTime?) content.GetValueForProperty("LastLockUpdateTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).LastLockUpdateTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).Operation = (string[]) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)this).Operation, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// GateKeeper for resource operations + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperTypeConverter))] + public partial interface IResourceOperationGateKeeper + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.TypeConverter.cs new file mode 100644 index 000000000000..60ef5de30d9d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ResourceOperationGateKeeperTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ResourceOperationGateKeeper.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeper.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeper.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.cs new file mode 100644 index 000000000000..cca58da3510e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.cs @@ -0,0 +1,95 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// GateKeeper for resource operations + public partial class ResourceOperationGateKeeper : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal + { + + /// Backing field for property. + private global::System.DateTime? _lastLockUpdateTime; + + /// LastTime ResourceOperationGateKeeper is updated + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? LastLockUpdateTime { get => this._lastLockUpdateTime; } + + /// Internal Acessors for LastLockUpdateTime + global::System.DateTime? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal.LastLockUpdateTime { get => this._lastLockUpdateTime; set { {_lastLockUpdateTime = value;} } } + + /// Internal Acessors for Operation + string[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal.Operation { get => this._operation; set { {_operation = value;} } } + + /// Internal Acessors for ProvisioningState + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal.ProvisioningState { get => this._provisioningState; set { {_provisioningState = value;} } } + + /// Backing field for property. + private string[] _operation; + + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string[] Operation { get => this._operation; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? _provisioningState; + + /// Provisioning state of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get => this._provisioningState; } + + /// Creates an new instance. + public ResourceOperationGateKeeper() + { + + } + } + /// GateKeeper for resource operations + public partial interface IResourceOperationGateKeeper : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// LastTime ResourceOperationGateKeeper is updated + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"LastTime ResourceOperationGateKeeper is updated", + SerializedName = @"lastLockUpdateTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? LastLockUpdateTime { get; } + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"{readonly} List of operations that can be protected by the ResourceOperationGateKeeper", + SerializedName = @"operations", + PossibleTypes = new [] { typeof(string) })] + string[] Operation { get; } + /// Provisioning state of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Provisioning state of the resource", + SerializedName = @"provisioningState", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; } + + } + /// GateKeeper for resource operations + internal partial interface IResourceOperationGateKeeperInternal + + { + /// LastTime ResourceOperationGateKeeper is updated + global::System.DateTime? LastLockUpdateTime { get; set; } + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + string[] Operation { get; set; } + /// Provisioning state of the resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.json.cs new file mode 100644 index 000000000000..9c674e60e4c8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeper.json.cs @@ -0,0 +1,122 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// GateKeeper for resource operations + public partial class ResourceOperationGateKeeper + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ResourceOperationGateKeeper(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ResourceOperationGateKeeper(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_lastLockUpdateTime = If( json?.PropertyT("lastLockUpdateTime"), out var __jsonLastLockUpdateTime) ? global::System.DateTime.TryParse((string)__jsonLastLockUpdateTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonLastLockUpdateTimeValue) ? __jsonLastLockUpdateTimeValue : LastLockUpdateTime : LastLockUpdateTime;} + {_provisioningState = If( json?.PropertyT("provisioningState"), out var __jsonProvisioningState) ? (string)__jsonProvisioningState : (string)ProvisioningState;} + {_operation = If( json?.PropertyT("operations"), out var __jsonOperations) ? If( __jsonOperations as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(string) (__u is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __t ? (string)(__t.ToString()) : null)) ))() : null : Operation;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != this._lastLockUpdateTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._lastLockUpdateTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "lastLockUpdateTime" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._provisioningState)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._provisioningState.ToString()) : null, "provisioningState" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + if (null != this._operation) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._operation ) + { + AddIf(null != (((object)__x)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__x.ToString()) : null ,__w.Add); + } + container.Add("operations",__w); + } + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.PowerShell.cs new file mode 100644 index 000000000000..348cbc4e9f22 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.PowerShell.cs @@ -0,0 +1,161 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// ResourceOperationGateKeeper Resource + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperResourceTypeConverter))] + public partial class ResourceOperationGateKeeperResource + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ResourceOperationGateKeeperResource(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ResourceOperationGateKeeperResource(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ResourceOperationGateKeeperResource(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).LastLockUpdateTime = (global::System.DateTime?) content.GetValueForProperty("LastLockUpdateTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).LastLockUpdateTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Operation = (string[]) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Operation, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ResourceOperationGateKeeperResource(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Property = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper) content.GetValueForProperty("Property",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Property, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType = (string) content.GetValueForProperty("IdentityType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl = (string) content.GetValueForProperty("IdentityUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId = (string) content.GetValueForProperty("IdentityPrincipalId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityPrincipalId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId = (string) content.GetValueForProperty("IdentityTenantId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).IdentityTenantId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails) content.GetValueForProperty("Identity",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Identity, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppIdentityDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name = (string) content.GetValueForProperty("Name",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Name, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type = (string) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Type, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) content.GetValueForProperty("Tag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)this).Tag, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResourceTagsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).ProvisioningState = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState?) content.GetValueForProperty("ProvisioningState",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).ProvisioningState, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).LastLockUpdateTime = (global::System.DateTime?) content.GetValueForProperty("LastLockUpdateTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).LastLockUpdateTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Operation = (string[]) content.GetValueForProperty("Operation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal)this).Operation, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// ResourceOperationGateKeeper Resource + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperResourceTypeConverter))] + public partial interface IResourceOperationGateKeeperResource + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.TypeConverter.cs new file mode 100644 index 000000000000..3878bdcb4b1c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.TypeConverter.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ResourceOperationGateKeeperResourceTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ResourceOperationGateKeeperResource.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeperResource.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeperResource.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.cs new file mode 100644 index 000000000000..e26d559ebc01 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.cs @@ -0,0 +1,186 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// ResourceOperationGateKeeper Resource + public partial class ResourceOperationGateKeeperResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource __dppTrackedResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource(); + + /// Optional ETag. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).ETag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).ETag = value; } + + /// Resource Id represents the complete path to the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id; } + + /// Input Managed Identity Details + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppIdentityDetails Identity { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Identity; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Identity = value; } + + /// + /// The object ID of the service principal object for the managed identity that is used to grant role-based access to an Azure + /// resource. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId; } + + /// + /// A Globally Unique Identifier (GUID) that represents the Azure AD tenant where the resource is now a member. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId; } + + /// The identityType which can be either SystemAssigned or None + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityType = value; } + + /// Identity Url + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl; } + + /// LastTime ResourceOperationGateKeeper is updated + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public global::System.DateTime? LastLockUpdateTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).LastLockUpdateTime; } + + /// Resource location. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Location { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Location; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Location = value; } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Id { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Id = value; } + + /// Internal Acessors for IdentityPrincipalId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityPrincipalId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityPrincipalId = value; } + + /// Internal Acessors for IdentityTenantId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityTenantId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityTenantId = value; } + + /// Internal Acessors for IdentityUrl + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.IdentityUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).IdentityUrl = value; } + + /// Internal Acessors for Name + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name = value; } + + /// Internal Acessors for Type + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal.Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type = value; } + + /// Internal Acessors for LastLockUpdateTime + global::System.DateTime? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal.LastLockUpdateTime { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).LastLockUpdateTime; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).LastLockUpdateTime = value; } + + /// Internal Acessors for Operation + string[] Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal.Operation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).Operation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).Operation = value; } + + /// Internal Acessors for Property + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal.Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeper()); set { {_property = value;} } } + + /// Internal Acessors for ProvisioningState + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceInternal.ProvisioningState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).ProvisioningState; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).ProvisioningState = value; } + + /// Resource name associated with the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Name { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Name; } + + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string[] Operation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).Operation; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper _property; + + /// ResourceOperationGateKeeperResource properties + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper Property { get => (this._property = this._property ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeper()); set => this._property = value; } + + /// Provisioning state of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperInternal)Property).ProvisioningState; } + + /// Resource tags. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Tag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Tag = value; } + + /// + /// Resource type represents the complete path of the form Namespace/ResourceType/ResourceType/... + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string Type { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal)__dppTrackedResource).Type; } + + /// Creates an new instance. + public ResourceOperationGateKeeperResource() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppTrackedResource), __dppTrackedResource); + await eventListener.AssertObjectIsValid(nameof(__dppTrackedResource), __dppTrackedResource); + } + } + /// ResourceOperationGateKeeper Resource + public partial interface IResourceOperationGateKeeperResource : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResource + { + /// LastTime ResourceOperationGateKeeper is updated + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"LastTime ResourceOperationGateKeeper is updated", + SerializedName = @"lastLockUpdateTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? LastLockUpdateTime { get; } + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"{readonly} List of operations that can be protected by the ResourceOperationGateKeeper", + SerializedName = @"operations", + PossibleTypes = new [] { typeof(string) })] + string[] Operation { get; } + /// Provisioning state of the resource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Provisioning state of the resource", + SerializedName = @"provisioningState", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; } + + } + /// ResourceOperationGateKeeper Resource + internal partial interface IResourceOperationGateKeeperResourceInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceInternal + { + /// LastTime ResourceOperationGateKeeper is updated + global::System.DateTime? LastLockUpdateTime { get; set; } + /// + /// {readonly} List of operations that can be protected by the ResourceOperationGateKeeper + /// + string[] Operation { get; set; } + /// ResourceOperationGateKeeperResource properties + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeper Property { get; set; } + /// Provisioning state of the resource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState? ProvisioningState { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.json.cs new file mode 100644 index 000000000000..252efd8b4a71 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResource.json.cs @@ -0,0 +1,104 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// ResourceOperationGateKeeper Resource + public partial class ResourceOperationGateKeeperResource + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ResourceOperationGateKeeperResource(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ResourceOperationGateKeeperResource(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppTrackedResource = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppTrackedResource(json); + {_property = If( json?.PropertyT("properties"), out var __jsonProperties) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeper.FromJson(__jsonProperties) : Property;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppTrackedResource?.ToJson(container, serializationMode); + AddIf( null != this._property ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._property.ToJson(null,serializationMode) : null, "properties" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.PowerShell.cs new file mode 100644 index 000000000000..8eff74c3ec7a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.PowerShell.cs @@ -0,0 +1,136 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// List of ResourceOperationGateKeeper resources + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperResourceListTypeConverter))] + public partial class ResourceOperationGateKeeperResourceList + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ResourceOperationGateKeeperResourceList(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ResourceOperationGateKeeperResourceList(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json + /// string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ResourceOperationGateKeeperResourceList(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ResourceOperationGateKeeperResourceList(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceListInternal)this).Value = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[]) content.GetValueForProperty("Value",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceListInternal)this).Value, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResourceTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink = (string) content.GetValueForProperty("NextLink",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)this).NextLink, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// List of ResourceOperationGateKeeper resources + [System.ComponentModel.TypeConverter(typeof(ResourceOperationGateKeeperResourceListTypeConverter))] + public partial interface IResourceOperationGateKeeperResourceList + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.TypeConverter.cs new file mode 100644 index 000000000000..41c7ae2944f9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.TypeConverter.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ResourceOperationGateKeeperResourceListTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ResourceOperationGateKeeperResourceList.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeperResourceList.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ResourceOperationGateKeeperResourceList.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.cs new file mode 100644 index 000000000000..c838b8bdad8e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of ResourceOperationGateKeeper resources + public partial class ResourceOperationGateKeeperResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceListInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(); + + /// + /// The uri to fetch the next page of resources. Call ListNext() fetches next page of resources. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string NextLink { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal)__dppResourceList).NextLink = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[] _value; + + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[] Value { get => this._value; set => this._value = value; } + + /// Creates an new instance. + public ResourceOperationGateKeeperResourceList() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__dppResourceList), __dppResourceList); + await eventListener.AssertObjectIsValid(nameof(__dppResourceList), __dppResourceList); + } + } + /// List of ResourceOperationGateKeeper resources + public partial interface IResourceOperationGateKeeperResourceList : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceList + { + /// List of resources. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of resources.", + SerializedName = @"value", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[] Value { get; set; } + + } + /// List of ResourceOperationGateKeeper resources + internal partial interface IResourceOperationGateKeeperResourceListInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppResourceListInternal + { + /// List of resources. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource[] Value { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.json.cs new file mode 100644 index 000000000000..778c9fa0a0e8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ResourceOperationGateKeeperResourceList.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// List of ResourceOperationGateKeeper resources + public partial class ResourceOperationGateKeeperResourceList + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResourceList FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ResourceOperationGateKeeperResourceList(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ResourceOperationGateKeeperResourceList(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __dppResourceList = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DppResourceList(json); + {_value = If( json?.PropertyT("value"), out var __jsonValue) ? If( __jsonValue as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource.FromJson(__u) )) ))() : null : Value;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __dppResourceList?.ToJson(container, serializationMode); + if (null != this._value) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._value ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("value",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.PowerShell.cs new file mode 100644 index 000000000000..b2f47431c030 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.PowerShell.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Class encapsulating restore as files target parameters + [System.ComponentModel.TypeConverter(typeof(RestoreFilesTargetInfoTypeConverter))] + public partial class RestoreFilesTargetInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RestoreFilesTargetInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RestoreFilesTargetInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RestoreFilesTargetInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails) content.GetValueForProperty("TargetDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailFilePrefix = (string) content.GetValueForProperty("TargetDetailFilePrefix",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailFilePrefix, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailUrl = (string) content.GetValueForProperty("TargetDetailUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailRestoreTargetLocationType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) content.GetValueForProperty("TargetDetailRestoreTargetLocationType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailRestoreTargetLocationType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType.CreateFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RestoreFilesTargetInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails) content.GetValueForProperty("TargetDetail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetail, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetailsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailFilePrefix = (string) content.GetValueForProperty("TargetDetailFilePrefix",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailFilePrefix, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailUrl = (string) content.GetValueForProperty("TargetDetailUrl",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailUrl, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailRestoreTargetLocationType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) content.GetValueForProperty("TargetDetailRestoreTargetLocationType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal)this).TargetDetailRestoreTargetLocationType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType.CreateFrom); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class encapsulating restore as files target parameters + [System.ComponentModel.TypeConverter(typeof(RestoreFilesTargetInfoTypeConverter))] + public partial interface IRestoreFilesTargetInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.TypeConverter.cs new file mode 100644 index 000000000000..e891f5f29261 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RestoreFilesTargetInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RestoreFilesTargetInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RestoreFilesTargetInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RestoreFilesTargetInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.cs new file mode 100644 index 000000000000..ebaeca94ba54 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class encapsulating restore as files target parameters + public partial class RestoreFilesTargetInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase __restoreTargetInfoBase = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase(); + + /// Internal Acessors for TargetDetail + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfoInternal.TargetDetail { get => (this._targetDetail = this._targetDetail ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetails()); set { {_targetDetail = value;} } } + + /// Internal Acessors for RecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal.RecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).ObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RestoreLocation = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails _targetDetail; + + /// Destination of RestoreAsFiles operation, when destination is not a datasource + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails TargetDetail { get => (this._targetDetail = this._targetDetail ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetails()); set => this._targetDetail = value; } + + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TargetDetailFilePrefix { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).FilePrefix; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).FilePrefix = value; } + + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType TargetDetailRestoreTargetLocationType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).RestoreTargetLocationType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).RestoreTargetLocationType = value; } + + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TargetDetailUrl { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).Url; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)TargetDetail).Url = value; } + + /// Creates an new instance. + public RestoreFilesTargetInfo() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__restoreTargetInfoBase), __restoreTargetInfoBase); + await eventListener.AssertObjectIsValid(nameof(__restoreTargetInfoBase), __restoreTargetInfoBase); + } + } + /// Class encapsulating restore as files target parameters + public partial interface IRestoreFilesTargetInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase + { + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Restore operation may create multiple files inside location pointed by Url + Below will be the common prefix for all of them", + SerializedName = @"filePrefix", + PossibleTypes = new [] { typeof(string) })] + string TargetDetailFilePrefix { get; set; } + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Denotes the target location where the data will be restored, + string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType}", + SerializedName = @"restoreTargetLocationType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType TargetDetailRestoreTargetLocationType { get; set; } + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Url denoting the restore destination. It can point to container / file share etc", + SerializedName = @"url", + PossibleTypes = new [] { typeof(string) })] + string TargetDetailUrl { get; set; } + + } + /// Class encapsulating restore as files target parameters + internal partial interface IRestoreFilesTargetInfoInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal + { + /// Destination of RestoreAsFiles operation, when destination is not a datasource + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails TargetDetail { get; set; } + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + string TargetDetailFilePrefix { get; set; } + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType TargetDetailRestoreTargetLocationType { get; set; } + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + string TargetDetailUrl { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.json.cs new file mode 100644 index 000000000000..da17971acb4c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreFilesTargetInfo.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class encapsulating restore as files target parameters + public partial class RestoreFilesTargetInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreFilesTargetInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new RestoreFilesTargetInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RestoreFilesTargetInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __restoreTargetInfoBase = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase(json); + {_targetDetail = If( json?.PropertyT("targetDetails"), out var __jsonTargetDetails) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetDetails.FromJson(__jsonTargetDetails) : TargetDetail;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __restoreTargetInfoBase?.ToJson(container, serializationMode); + AddIf( null != this._targetDetail ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._targetDetail.ToJson(null,serializationMode) : null, "targetDetails" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.PowerShell.cs new file mode 100644 index 000000000000..98a5b807a92c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(RestoreJobRecoveryPointDetailsTypeConverter))] + public partial class RestoreJobRecoveryPointDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RestoreJobRecoveryPointDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RestoreJobRecoveryPointDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RestoreJobRecoveryPointDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("RecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RestoreJobRecoveryPointDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointTime = (global::System.DateTime?) content.GetValueForProperty("RecoveryPointTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal)this).RecoveryPointTime, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified)); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(RestoreJobRecoveryPointDetailsTypeConverter))] + public partial interface IRestoreJobRecoveryPointDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.TypeConverter.cs new file mode 100644 index 000000000000..aea62ab8df0f --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RestoreJobRecoveryPointDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RestoreJobRecoveryPointDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RestoreJobRecoveryPointDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RestoreJobRecoveryPointDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.cs new file mode 100644 index 000000000000..b824730cb820 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.cs @@ -0,0 +1,56 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class RestoreJobRecoveryPointDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetailsInternal + { + + /// Backing field for property. + private string _recoveryPointId; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryPointId { get => this._recoveryPointId; set => this._recoveryPointId = value; } + + /// Backing field for property. + private global::System.DateTime? _recoveryPointTime; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime? RecoveryPointTime { get => this._recoveryPointTime; set => this._recoveryPointTime = value; } + + /// Creates an new instance. + public RestoreJobRecoveryPointDetails() + { + + } + } + public partial interface IRestoreJobRecoveryPointDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointID", + PossibleTypes = new [] { typeof(string) })] + string RecoveryPointId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointTime", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime? RecoveryPointTime { get; set; } + + } + internal partial interface IRestoreJobRecoveryPointDetailsInternal + + { + string RecoveryPointId { get; set; } + + global::System.DateTime? RecoveryPointTime { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.json.cs new file mode 100644 index 000000000000..ec074ac5b96e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreJobRecoveryPointDetails.json.cs @@ -0,0 +1,102 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class RestoreJobRecoveryPointDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreJobRecoveryPointDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new RestoreJobRecoveryPointDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RestoreJobRecoveryPointDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_recoveryPointId = If( json?.PropertyT("recoveryPointID"), out var __jsonRecoveryPointId) ? (string)__jsonRecoveryPointId : (string)RecoveryPointId;} + {_recoveryPointTime = If( json?.PropertyT("recoveryPointTime"), out var __jsonRecoveryPointTime) ? global::System.DateTime.TryParse((string)__jsonRecoveryPointTime, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var __jsonRecoveryPointTimeValue) ? __jsonRecoveryPointTimeValue : RecoveryPointTime : RecoveryPointTime;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._recoveryPointId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointId.ToString()) : null, "recoveryPointID" ,container.Add ); + AddIf( null != this._recoveryPointTime ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointTime?.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) : null, "recoveryPointTime" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.PowerShell.cs new file mode 100644 index 000000000000..420d9ceecab5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.PowerShell.cs @@ -0,0 +1,169 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Class encapsulating restore target parameters + [System.ComponentModel.TypeConverter(typeof(RestoreTargetInfoTypeConverter))] + public partial class RestoreTargetInfo + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RestoreTargetInfo(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RestoreTargetInfo(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RestoreTargetInfo(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource) content.GetValueForProperty("DatasourceInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet) content.GetValueForProperty("DatasourceSetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSetTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoDatasourceType = (string) content.GetValueForProperty("DatasourceInfoDatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoDatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoObjectType = (string) content.GetValueForProperty("DatasourceInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceId = (string) content.GetValueForProperty("DatasourceInfoResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceLocation = (string) content.GetValueForProperty("DatasourceInfoResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceName = (string) content.GetValueForProperty("DatasourceInfoResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceType = (string) content.GetValueForProperty("DatasourceInfoResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceUri = (string) content.GetValueForProperty("DatasourceInfoResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceUri, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoDatasourceType = (string) content.GetValueForProperty("DatasourceSetInfoDatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoDatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoObjectType = (string) content.GetValueForProperty("DatasourceSetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceId = (string) content.GetValueForProperty("DatasourceSetInfoResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceLocation = (string) content.GetValueForProperty("DatasourceSetInfoResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceName = (string) content.GetValueForProperty("DatasourceSetInfoResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceType = (string) content.GetValueForProperty("DatasourceSetInfoResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceUri = (string) content.GetValueForProperty("DatasourceSetInfoResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceUri, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RestoreTargetInfo(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource) content.GetValueForProperty("DatasourceInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet) content.GetValueForProperty("DatasourceSetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSetTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoDatasourceType = (string) content.GetValueForProperty("DatasourceInfoDatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoDatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoObjectType = (string) content.GetValueForProperty("DatasourceInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceId = (string) content.GetValueForProperty("DatasourceInfoResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceLocation = (string) content.GetValueForProperty("DatasourceInfoResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceName = (string) content.GetValueForProperty("DatasourceInfoResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceType = (string) content.GetValueForProperty("DatasourceInfoResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceUri = (string) content.GetValueForProperty("DatasourceInfoResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceInfoResourceUri, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoDatasourceType = (string) content.GetValueForProperty("DatasourceSetInfoDatasourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoDatasourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoObjectType = (string) content.GetValueForProperty("DatasourceSetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceId = (string) content.GetValueForProperty("DatasourceSetInfoResourceId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceLocation = (string) content.GetValueForProperty("DatasourceSetInfoResourceLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceLocation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceName = (string) content.GetValueForProperty("DatasourceSetInfoResourceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceType = (string) content.GetValueForProperty("DatasourceSetInfoResourceType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceUri = (string) content.GetValueForProperty("DatasourceSetInfoResourceUri",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal)this).DatasourceSetInfoResourceUri, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class encapsulating restore target parameters + [System.ComponentModel.TypeConverter(typeof(RestoreTargetInfoTypeConverter))] + public partial interface IRestoreTargetInfo + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.TypeConverter.cs new file mode 100644 index 000000000000..b95e7307ab0a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RestoreTargetInfoTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RestoreTargetInfo.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RestoreTargetInfo.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RestoreTargetInfo.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.cs new file mode 100644 index 000000000000..aba22c0955a9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.cs @@ -0,0 +1,301 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class encapsulating restore target parameters + public partial class RestoreTargetInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase __restoreTargetInfoBase = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase(); + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource _datasourceInfo; + + /// Information of target DS + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DatasourceInfo { get => (this._datasourceInfo = this._datasourceInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource()); set => this._datasourceInfo = value; } + + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoDatasourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).Type; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).Type = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ObjectType = value; } + + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoResourceId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceId = value; } + + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoResourceLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceLocation = value; } + + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoResourceName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceName = value; } + + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoResourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceType = value; } + + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceInfoResourceUri { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceUri; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceInternal)DatasourceInfo).ResourceUri = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet _datasourceSetInfo; + + /// Information of target DS Set + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DatasourceSetInfo { get => (this._datasourceSetInfo = this._datasourceSetInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet()); set => this._datasourceSetInfo = value; } + + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoDatasourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).DatasourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).DatasourceType = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ObjectType = value; } + + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoResourceId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceId; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceId = value; } + + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoResourceLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceLocation = value; } + + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoResourceName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceName = value; } + + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoResourceType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceType = value; } + + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DatasourceSetInfoResourceUri { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceUri; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSetInternal)DatasourceSetInfo).ResourceUri = value; } + + /// Internal Acessors for RecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal.RecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption = value; } + + /// Internal Acessors for DatasourceInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal.DatasourceInfo { get => (this._datasourceInfo = this._datasourceInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource()); set { {_datasourceInfo = value;} } } + + /// Internal Acessors for DatasourceSetInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoInternal.DatasourceSetInfo { get => (this._datasourceSetInfo = this._datasourceSetInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet()); set { {_datasourceSetInfo = value;} } } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).ObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string RestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)__restoreTargetInfoBase).RestoreLocation = value; } + + /// Creates an new instance. + public RestoreTargetInfo() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__restoreTargetInfoBase), __restoreTargetInfoBase); + await eventListener.AssertObjectIsValid(nameof(__restoreTargetInfoBase), __restoreTargetInfoBase); + } + } + /// Class encapsulating restore target parameters + public partial interface IRestoreTargetInfo : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase + { + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"DatasourceType of the resource.", + SerializedName = @"datasourceType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoDatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault.", + SerializedName = @"resourceID", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoResourceId { get; set; } + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Location of datasource.", + SerializedName = @"resourceLocation", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique identifier of the resource in the context of parent.", + SerializedName = @"resourceName", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoResourceName { get; set; } + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource Type of Datasource.", + SerializedName = @"resourceType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoResourceType { get; set; } + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Uri of the resource.", + SerializedName = @"resourceUri", + PossibleTypes = new [] { typeof(string) })] + string DatasourceInfoResourceUri { get; set; } + /// DatasourceType of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"DatasourceType of the resource.", + SerializedName = @"datasourceType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoDatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created by backup service via Fabric/Vault.", + SerializedName = @"resourceID", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoResourceId { get; set; } + /// Location of datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Location of datasource.", + SerializedName = @"resourceLocation", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique identifier of the resource in the context of parent.", + SerializedName = @"resourceName", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoResourceName { get; set; } + /// Resource Type of Datasource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource Type of Datasource.", + SerializedName = @"resourceType", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoResourceType { get; set; } + /// Uri of the resource. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Uri of the resource.", + SerializedName = @"resourceUri", + PossibleTypes = new [] { typeof(string) })] + string DatasourceSetInfoResourceUri { get; set; } + + } + /// Class encapsulating restore target parameters + internal partial interface IRestoreTargetInfoInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal + { + /// Information of target DS + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasource DatasourceInfo { get; set; } + /// DatasourceType of the resource. + string DatasourceInfoDatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string DatasourceInfoObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + string DatasourceInfoResourceId { get; set; } + /// Location of datasource. + string DatasourceInfoResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + string DatasourceInfoResourceName { get; set; } + /// Resource Type of Datasource. + string DatasourceInfoResourceType { get; set; } + /// Uri of the resource. + string DatasourceInfoResourceUri { get; set; } + /// Information of target DS Set + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDatasourceSet DatasourceSetInfo { get; set; } + /// DatasourceType of the resource. + string DatasourceSetInfoDatasourceType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string DatasourceSetInfoObjectType { get; set; } + /// + /// Full ARM ID of the resource. For azure resources, this is ARM ID. For non azure resources, this will be the ID created + /// by backup service via Fabric/Vault. + /// + string DatasourceSetInfoResourceId { get; set; } + /// Location of datasource. + string DatasourceSetInfoResourceLocation { get; set; } + /// Unique identifier of the resource in the context of parent. + string DatasourceSetInfoResourceName { get; set; } + /// Resource Type of Datasource. + string DatasourceSetInfoResourceType { get; set; } + /// Uri of the resource. + string DatasourceSetInfoResourceUri { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.json.cs new file mode 100644 index 000000000000..d5162bd4ecc7 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfo.json.cs @@ -0,0 +1,105 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Class encapsulating restore target parameters + public partial class RestoreTargetInfo + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfo FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new RestoreTargetInfo(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RestoreTargetInfo(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __restoreTargetInfoBase = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBase(json); + {_datasourceInfo = If( json?.PropertyT("datasourceInfo"), out var __jsonDatasourceInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Datasource.FromJson(__jsonDatasourceInfo) : DatasourceInfo;} + {_datasourceSetInfo = If( json?.PropertyT("datasourceSetInfo"), out var __jsonDatasourceSetInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DatasourceSet.FromJson(__jsonDatasourceSetInfo) : DatasourceSetInfo;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __restoreTargetInfoBase?.ToJson(container, serializationMode); + AddIf( null != this._datasourceInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._datasourceInfo.ToJson(null,serializationMode) : null, "datasourceInfo" ,container.Add ); + AddIf( null != this._datasourceSetInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._datasourceSetInfo.ToJson(null,serializationMode) : null, "datasourceSetInfo" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.PowerShell.cs new file mode 100644 index 000000000000..d3a58e3c3f33 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + [System.ComponentModel.TypeConverter(typeof(RestoreTargetInfoBaseTypeConverter))] + public partial class RestoreTargetInfoBase + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RestoreTargetInfoBase(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RestoreTargetInfoBase(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RestoreTargetInfoBase(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RestoreTargetInfoBase(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption = (string) content.GetValueForProperty("RecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation = (string) content.GetValueForProperty("RestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal)this).RestoreLocation, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + [System.ComponentModel.TypeConverter(typeof(RestoreTargetInfoBaseTypeConverter))] + public partial interface IRestoreTargetInfoBase + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.TypeConverter.cs new file mode 100644 index 000000000000..0ee4dfcd7c04 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RestoreTargetInfoBaseTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RestoreTargetInfoBase.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RestoreTargetInfoBase.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RestoreTargetInfoBase.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.cs new file mode 100644 index 000000000000..bc60e2268d5a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.cs @@ -0,0 +1,83 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + public partial class RestoreTargetInfoBase : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal + { + + /// Internal Acessors for RecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBaseInternal.RecoveryOption { get => this._recoveryOption; set { {_recoveryOption = value;} } } + + /// Backing field for property. + private string _objectType; + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Backing field for property. + private string _recoveryOption= @"FailIfExists"; + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryOption { get => this._recoveryOption; } + + /// Backing field for property. + private string _restoreLocation; + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RestoreLocation { get => this._restoreLocation; set => this._restoreLocation = value; } + + /// Creates an new instance. + public RestoreTargetInfoBase() + { + + } + } + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + public partial interface IRestoreTargetInfoBase : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = true, + Description = @"Recovery Option", + SerializedName = @"recoveryOption", + PossibleTypes = new [] { typeof(string) })] + string RecoveryOption { get; } + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + string RestoreLocation { get; set; } + + } + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + internal partial interface IRestoreTargetInfoBaseInternal + + { + /// Type of Datasource object, used to initialize the right inherited type + string ObjectType { get; set; } + /// Recovery Option + string RecoveryOption { get; set; } + /// Target Restore region + string RestoreLocation { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.json.cs new file mode 100644 index 000000000000..6bad647c1a5b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RestoreTargetInfoBase.json.cs @@ -0,0 +1,124 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Base class common to RestoreTargetInfo and RestoreFilesTargetInfo + public partial class RestoreTargetInfoBase + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase interface is + /// polymorphic, and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "RestoreFilesTargetInfo": + { + return new RestoreFilesTargetInfo(json); + } + case "RestoreTargetInfo": + { + return new RestoreTargetInfo(json); + } + } + return new RestoreTargetInfoBase(json); + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RestoreTargetInfoBase(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + {_recoveryOption = If( json?.PropertyT("recoveryOption"), out var __jsonRecoveryOption) ? (string)__jsonRecoveryOption : (string)RecoveryOption;} + {_restoreLocation = If( json?.PropertyT("restoreLocation"), out var __jsonRestoreLocation) ? (string)__jsonRestoreLocation : (string)RestoreLocation;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AddIf( null != (((object)this._recoveryOption)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryOption.ToString()) : null, "recoveryOption" ,container.Add ); + AddIf( null != (((object)this._restoreLocation)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._restoreLocation.ToString()) : null, "restoreLocation" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.PowerShell.cs new file mode 100644 index 000000000000..1d6f338f991c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.PowerShell.cs @@ -0,0 +1,135 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Retention tag + [System.ComponentModel.TypeConverter(typeof(RetentionTagTypeConverter))] + public partial class RetentionTag + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new RetentionTag(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new RetentionTag(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal RetentionTag(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).TagName = (string) content.GetValueForProperty("TagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).TagName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal RetentionTag(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).ETag = (string) content.GetValueForProperty("ETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).ETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).TagName = (string) content.GetValueForProperty("TagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)this).TagName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Retention tag + [System.ComponentModel.TypeConverter(typeof(RetentionTagTypeConverter))] + public partial interface IRetentionTag + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.TypeConverter.cs new file mode 100644 index 000000000000..d39d48dda56b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class RetentionTagTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return RetentionTag.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return RetentionTag.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return RetentionTag.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.cs new file mode 100644 index 000000000000..690fa3433c32 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.cs @@ -0,0 +1,86 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Retention tag + public partial class RetentionTag : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal + { + + /// Backing field for property. + private string _eTag; + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ETag { get => this._eTag; } + + /// Backing field for property. + private string _id; + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; } + + /// Internal Acessors for ETag + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal.ETag { get => this._eTag; set { {_eTag = value;} } } + + /// Internal Acessors for Id + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal.Id { get => this._id; set { {_id = value;} } } + + /// Backing field for property. + private string _tagName; + + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string TagName { get => this._tagName; set => this._tagName = value; } + + /// Creates an new instance. + public RetentionTag() + { + + } + } + /// Retention tag + public partial interface IRetentionTag : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + string ETag { get; } + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; } + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention Tag Name to relate it to retention rule.", + SerializedName = @"tagName", + PossibleTypes = new [] { typeof(string) })] + string TagName { get; set; } + + } + /// Retention tag + internal partial interface IRetentionTagInternal + + { + /// Retention Tag version. + string ETag { get; set; } + /// Retention Tag version. + string Id { get; set; } + /// Retention Tag Name to relate it to retention rule. + string TagName { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.json.cs new file mode 100644 index 000000000000..456eac532aff --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/RetentionTag.json.cs @@ -0,0 +1,111 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Retention tag + public partial class RetentionTag + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new RetentionTag(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal RetentionTag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_eTag = If( json?.PropertyT("eTag"), out var __jsonETag) ? (string)__jsonETag : (string)ETag;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + {_tagName = If( json?.PropertyT("tagName"), out var __jsonTagName) ? (string)__jsonTagName : (string)TagName;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._eTag)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._eTag.ToString()) : null, "eTag" ,container.Add ); + } + if (serializationMode.HasFlag(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeReadOnly)) + { + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + } + AddIf( null != (((object)this._tagName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._tagName.ToString()) : null, "tagName" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.PowerShell.cs new file mode 100644 index 000000000000..56bd44b4a39c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.PowerShell.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Schedule based backup criteria + [System.ComponentModel.TypeConverter(typeof(ScheduleBasedBackupCriteriaTypeConverter))] + public partial class ScheduleBasedBackupCriteria + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ScheduleBasedBackupCriteria(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ScheduleBasedBackupCriteria(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ScheduleBasedBackupCriteria(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).AbsoluteCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[]) content.GetValueForProperty("AbsoluteCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).AbsoluteCriterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfMonth = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[]) content.GetValueForProperty("DaysOfMonth",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfMonth, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DayTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfTheWeek = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[]) content.GetValueForProperty("DaysOfTheWeek",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfTheWeek, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).MonthsOfYear = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[]) content.GetValueForProperty("MonthsOfYear",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).MonthsOfYear, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).ScheduleTime = (global::System.DateTime[]) content.GetValueForProperty("ScheduleTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).ScheduleTime, __y => TypeConverterExtensions.SelectToArray(__y, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).WeeksOfTheMonth = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[]) content.GetValueForProperty("WeeksOfTheMonth",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).WeeksOfTheMonth, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ScheduleBasedBackupCriteria(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).AbsoluteCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[]) content.GetValueForProperty("AbsoluteCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).AbsoluteCriterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfMonth = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[]) content.GetValueForProperty("DaysOfMonth",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfMonth, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DayTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfTheWeek = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[]) content.GetValueForProperty("DaysOfTheWeek",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).DaysOfTheWeek, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).MonthsOfYear = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[]) content.GetValueForProperty("MonthsOfYear",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).MonthsOfYear, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).ScheduleTime = (global::System.DateTime[]) content.GetValueForProperty("ScheduleTime",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).ScheduleTime, __y => TypeConverterExtensions.SelectToArray(__y, (v) => v is global::System.DateTime _v ? _v : global::System.Xml.XmlConvert.ToDateTime( v.ToString() , global::System.Xml.XmlDateTimeSerializationMode.Unspecified))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).WeeksOfTheMonth = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[]) content.GetValueForProperty("WeeksOfTheMonth",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal)this).WeeksOfTheMonth, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber.CreateFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Schedule based backup criteria + [System.ComponentModel.TypeConverter(typeof(ScheduleBasedBackupCriteriaTypeConverter))] + public partial interface IScheduleBasedBackupCriteria + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.TypeConverter.cs new file mode 100644 index 000000000000..982c1dc086d4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ScheduleBasedBackupCriteriaTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ScheduleBasedBackupCriteria.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ScheduleBasedBackupCriteria.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ScheduleBasedBackupCriteria.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.cs new file mode 100644 index 000000000000..1b1470f66287 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.cs @@ -0,0 +1,164 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule based backup criteria + public partial class ScheduleBasedBackupCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteriaInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria __backupCriteria = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteria(); + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[] _absoluteCriterion; + + /// + /// it contains absolute values like "AllBackup" / "FirstOfDay" / "FirstOfWeek" / "FirstOfMonth" + /// and should be part of AbsoluteMarker enum + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[] AbsoluteCriterion { get => this._absoluteCriterion; set => this._absoluteCriterion = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[] _daysOfMonth; + + /// This is day of the month from 1 to 28 other wise last of month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[] DaysOfMonth { get => this._daysOfMonth; set => this._daysOfMonth = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[] _daysOfTheWeek; + + /// It should be Sunday/Monday/T..../Saturday + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[] DaysOfTheWeek { get => this._daysOfTheWeek; set => this._daysOfTheWeek = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[] _monthsOfYear; + + /// It should be January/February/....../December + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[] MonthsOfYear { get => this._monthsOfYear; set => this._monthsOfYear = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)__backupCriteria).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal)__backupCriteria).ObjectType = value; } + + /// Backing field for property. + private global::System.DateTime[] _scheduleTime; + + /// List of schedule times for backup + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public global::System.DateTime[] ScheduleTime { get => this._scheduleTime; set => this._scheduleTime = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[] _weeksOfTheMonth; + + /// It should be Fisrt/Second/Third/Fourth/Last + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[] WeeksOfTheMonth { get => this._weeksOfTheMonth; set => this._weeksOfTheMonth = value; } + + /// Creates an new instance. + public ScheduleBasedBackupCriteria() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__backupCriteria), __backupCriteria); + await eventListener.AssertObjectIsValid(nameof(__backupCriteria), __backupCriteria); + } + } + /// Schedule based backup criteria + public partial interface IScheduleBasedBackupCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria + { + /// + /// it contains absolute values like "AllBackup" / "FirstOfDay" / "FirstOfWeek" / "FirstOfMonth" + /// and should be part of AbsoluteMarker enum + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"it contains absolute values like ""AllBackup"" / ""FirstOfDay"" / ""FirstOfWeek"" / ""FirstOfMonth"" + and should be part of AbsoluteMarker enum", + SerializedName = @"absoluteCriteria", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[] AbsoluteCriterion { get; set; } + /// This is day of the month from 1 to 28 other wise last of month + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"This is day of the month from 1 to 28 other wise last of month", + SerializedName = @"daysOfMonth", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[] DaysOfMonth { get; set; } + /// It should be Sunday/Monday/T..../Saturday + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"It should be Sunday/Monday/T..../Saturday", + SerializedName = @"daysOfTheWeek", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[] DaysOfTheWeek { get; set; } + /// It should be January/February/....../December + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"It should be January/February/....../December", + SerializedName = @"monthsOfYear", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[] MonthsOfYear { get; set; } + /// List of schedule times for backup + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"List of schedule times for backup", + SerializedName = @"scheduleTimes", + PossibleTypes = new [] { typeof(global::System.DateTime) })] + global::System.DateTime[] ScheduleTime { get; set; } + /// It should be Fisrt/Second/Third/Fourth/Last + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"It should be Fisrt/Second/Third/Fourth/Last", + SerializedName = @"weeksOfTheMonth", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[] WeeksOfTheMonth { get; set; } + + } + /// Schedule based backup criteria + internal partial interface IScheduleBasedBackupCriteriaInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteriaInternal + { + /// + /// it contains absolute values like "AllBackup" / "FirstOfDay" / "FirstOfWeek" / "FirstOfMonth" + /// and should be part of AbsoluteMarker enum + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker[] AbsoluteCriterion { get; set; } + /// This is day of the month from 1 to 28 other wise last of month + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay[] DaysOfMonth { get; set; } + /// It should be Sunday/Monday/T..../Saturday + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek[] DaysOfTheWeek { get; set; } + /// It should be January/February/....../December + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month[] MonthsOfYear { get; set; } + /// List of schedule times for backup + global::System.DateTime[] ScheduleTime { get; set; } + /// It should be Fisrt/Second/Third/Fourth/Last + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber[] WeeksOfTheMonth { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.json.cs new file mode 100644 index 000000000000..fbf0fd65161e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedBackupCriteria.json.cs @@ -0,0 +1,161 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule based backup criteria + public partial class ScheduleBasedBackupCriteria + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ScheduleBasedBackupCriteria(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ScheduleBasedBackupCriteria(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __backupCriteria = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteria(json); + {_absoluteCriterion = If( json?.PropertyT("absoluteCriteria"), out var __jsonAbsoluteCriteria) ? If( __jsonAbsoluteCriteria as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker) (__u is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __t ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker)(__t.ToString()) : ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker)""))) ))() : null : AbsoluteCriterion;} + {_daysOfMonth = If( json?.PropertyT("daysOfMonth"), out var __jsonDaysOfMonth) ? If( __jsonDaysOfMonth as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __q) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__q, (__p)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDay) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.Day.FromJson(__p) )) ))() : null : DaysOfMonth;} + {_daysOfTheWeek = If( json?.PropertyT("daysOfTheWeek"), out var __jsonDaysOfTheWeek) ? If( __jsonDaysOfTheWeek as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __l) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__l, (__k)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek) (__k is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __j ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek)(__j.ToString()) : ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek)""))) ))() : null : DaysOfTheWeek;} + {_monthsOfYear = If( json?.PropertyT("monthsOfYear"), out var __jsonMonthsOfYear) ? If( __jsonMonthsOfYear as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __g) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__g, (__f)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month) (__f is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __e ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month)(__e.ToString()) : ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month)""))) ))() : null : MonthsOfYear;} + {_scheduleTime = If( json?.PropertyT("scheduleTimes"), out var __jsonScheduleTimes) ? If( __jsonScheduleTimes as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __b) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__b, (__a)=>(global::System.DateTime) (__a is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString ___z ? global::System.DateTime.TryParse((string)___z, global::System.Globalization.CultureInfo.InvariantCulture, global::System.Globalization.DateTimeStyles.AdjustToUniversal, out var ___zValue) ? ___zValue : default(global::System.DateTime) : default(global::System.DateTime))) ))() : null : ScheduleTime;} + {_weeksOfTheMonth = If( json?.PropertyT("weeksOfTheMonth"), out var __jsonWeeksOfTheMonth) ? If( __jsonWeeksOfTheMonth as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var ___w) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(___w, (___v)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber) (___v is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString ___u ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber)(___u.ToString()) : ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber)""))) ))() : null : WeeksOfTheMonth;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __backupCriteria?.ToJson(container, serializationMode); + if (null != this._absoluteCriterion) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._absoluteCriterion ) + { + AddIf(null != (((object)__x)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__x.ToString()) : null ,__w.Add); + } + container.Add("absoluteCriteria",__w); + } + if (null != this._daysOfMonth) + { + var __r = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __s in this._daysOfMonth ) + { + AddIf(__s?.ToJson(null, serializationMode) ,__r.Add); + } + container.Add("daysOfMonth",__r); + } + if (null != this._daysOfTheWeek) + { + var __m = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __n in this._daysOfTheWeek ) + { + AddIf(null != (((object)__n)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__n.ToString()) : null ,__m.Add); + } + container.Add("daysOfTheWeek",__m); + } + if (null != this._monthsOfYear) + { + var __h = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __i in this._monthsOfYear ) + { + AddIf(null != (((object)__i)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__i.ToString()) : null ,__h.Add); + } + container.Add("monthsOfYear",__h); + } + if (null != this._scheduleTime) + { + var __c = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __d in this._scheduleTime ) + { + AddIf((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__d.ToString(@"yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK",global::System.Globalization.CultureInfo.InvariantCulture)) ,__c.Add); + } + container.Add("scheduleTimes",__c); + } + if (null != this._weeksOfTheMonth) + { + var ___x = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var ___y in this._weeksOfTheMonth ) + { + AddIf(null != (((object)___y)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(___y.ToString()) : null ,___x.Add); + } + container.Add("weeksOfTheMonth",___x); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.PowerShell.cs new file mode 100644 index 000000000000..21ee8f962036 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Schedule based trigger context + [System.ComponentModel.TypeConverter(typeof(ScheduleBasedTriggerContextTypeConverter))] + public partial class ScheduleBasedTriggerContext + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ScheduleBasedTriggerContext(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ScheduleBasedTriggerContext(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ScheduleBasedTriggerContext(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).Schedule = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule) content.GetValueForProperty("Schedule",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).Schedule, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupScheduleTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).TaggingCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[]) content.GetValueForProperty("TaggingCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).TaggingCriterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TaggingCriteriaTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).ScheduleRepeatingTimeInterval = (string[]) content.GetValueForProperty("ScheduleRepeatingTimeInterval",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).ScheduleRepeatingTimeInterval, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ScheduleBasedTriggerContext(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).Schedule = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule) content.GetValueForProperty("Schedule",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).Schedule, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupScheduleTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).TaggingCriterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[]) content.GetValueForProperty("TaggingCriterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).TaggingCriterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TaggingCriteriaTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).ScheduleRepeatingTimeInterval = (string[]) content.GetValueForProperty("ScheduleRepeatingTimeInterval",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal)this).ScheduleRepeatingTimeInterval, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Schedule based trigger context + [System.ComponentModel.TypeConverter(typeof(ScheduleBasedTriggerContextTypeConverter))] + public partial interface IScheduleBasedTriggerContext + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.TypeConverter.cs new file mode 100644 index 000000000000..1496031db82d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ScheduleBasedTriggerContextTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ScheduleBasedTriggerContext.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ScheduleBasedTriggerContext.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ScheduleBasedTriggerContext.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.cs new file mode 100644 index 000000000000..0c36038ad7bc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.cs @@ -0,0 +1,95 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule based trigger context + public partial class ScheduleBasedTriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates + { + /// + /// Backing field for Inherited model + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext __triggerContext = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext(); + + /// Internal Acessors for Schedule + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContextInternal.Schedule { get => (this._schedule = this._schedule ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupSchedule()); set { {_schedule = value;} } } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inherited)] + public string ObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)__triggerContext).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)__triggerContext).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule _schedule; + + /// Schedule for this backup + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule Schedule { get => (this._schedule = this._schedule ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupSchedule()); set => this._schedule = value; } + + /// ISO 8601 repeating time interval format + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string[] ScheduleRepeatingTimeInterval { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)Schedule).RepeatingTimeInterval; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupScheduleInternal)Schedule).RepeatingTimeInterval = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[] _taggingCriterion; + + /// List of tags that can be applicable for given schedule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[] TaggingCriterion { get => this._taggingCriterion; set => this._taggingCriterion = value; } + + /// Creates an new instance. + public ScheduleBasedTriggerContext() + { + + } + + /// Validates that this object meets the validation criteria. + /// an instance that will receive validation + /// events. + /// + /// A < see cref = "global::System.Threading.Tasks.Task" /> that will be complete when validation is completed. + /// + public async global::System.Threading.Tasks.Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener eventListener) + { + await eventListener.AssertNotNull(nameof(__triggerContext), __triggerContext); + await eventListener.AssertObjectIsValid(nameof(__triggerContext), __triggerContext); + } + } + /// Schedule based trigger context + public partial interface IScheduleBasedTriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext + { + /// ISO 8601 repeating time interval format + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"ISO 8601 repeating time interval format", + SerializedName = @"repeatingTimeIntervals", + PossibleTypes = new [] { typeof(string) })] + string[] ScheduleRepeatingTimeInterval { get; set; } + /// List of tags that can be applicable for given schedule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"List of tags that can be applicable for given schedule.", + SerializedName = @"taggingCriteria", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[] TaggingCriterion { get; set; } + + } + /// Schedule based trigger context + internal partial interface IScheduleBasedTriggerContextInternal : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal + { + /// Schedule for this backup + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupSchedule Schedule { get; set; } + /// ISO 8601 repeating time interval format + string[] ScheduleRepeatingTimeInterval { get; set; } + /// List of tags that can be applicable for given schedule. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria[] TaggingCriterion { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.json.cs new file mode 100644 index 000000000000..90c9d31644c2 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ScheduleBasedTriggerContext.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Schedule based trigger context + public partial class ScheduleBasedTriggerContext + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedTriggerContext FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ScheduleBasedTriggerContext(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ScheduleBasedTriggerContext(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + __triggerContext = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerContext(json); + {_schedule = If( json?.PropertyT("schedule"), out var __jsonSchedule) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupSchedule.FromJson(__jsonSchedule) : Schedule;} + {_taggingCriterion = If( json?.PropertyT("taggingCriteria"), out var __jsonTaggingCriteria) ? If( __jsonTaggingCriteria as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TaggingCriteria.FromJson(__u) )) ))() : null : TaggingCriterion;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + __triggerContext?.ToJson(container, serializationMode); + AddIf( null != this._schedule ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._schedule.ToJson(null,serializationMode) : null, "schedule" ,container.Add ); + if (null != this._taggingCriterion) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._taggingCriterion ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("taggingCriteria",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.PowerShell.cs new file mode 100644 index 000000000000..2b9fca721a6d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Source LifeCycle + [System.ComponentModel.TypeConverter(typeof(SourceLifeCycleTypeConverter))] + public partial class SourceLifeCycle + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new SourceLifeCycle(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new SourceLifeCycle(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal SourceLifeCycle(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption) content.GetValueForProperty("DeleteAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("SourceDataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).TargetDataStoreCopySetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[]) content.GetValueForProperty("TargetDataStoreCopySetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).TargetDataStoreCopySetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetCopySettingTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterDuration = (string) content.GetValueForProperty("DeleteAfterDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterObjectType = (string) content.GetValueForProperty("DeleteAfterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreObjectType = (string) content.GetValueForProperty("SourceDataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal SourceLifeCycle(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption) content.GetValueForProperty("DeleteAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("SourceDataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).TargetDataStoreCopySetting = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[]) content.GetValueForProperty("TargetDataStoreCopySetting",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).TargetDataStoreCopySetting, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetCopySettingTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterDuration = (string) content.GetValueForProperty("DeleteAfterDuration",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterDuration, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterObjectType = (string) content.GetValueForProperty("DeleteAfterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).DeleteAfterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("SourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreObjectType = (string) content.GetValueForProperty("SourceDataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal)this).SourceDataStoreObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Source LifeCycle + [System.ComponentModel.TypeConverter(typeof(SourceLifeCycleTypeConverter))] + public partial interface ISourceLifeCycle + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.TypeConverter.cs new file mode 100644 index 000000000000..080512e0fc7a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class SourceLifeCycleTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return SourceLifeCycle.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return SourceLifeCycle.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return SourceLifeCycle.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.cs new file mode 100644 index 000000000000..e5a7aa3a93d6 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.cs @@ -0,0 +1,125 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Source LifeCycle + public partial class SourceLifeCycle : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption _deleteAfter; + + /// Delete Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption DeleteAfter { get => (this._deleteAfter = this._deleteAfter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption()); set => this._deleteAfter = value; } + + /// Duration of deletion after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DeleteAfterDuration { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)DeleteAfter).Duration; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)DeleteAfter).Duration = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DeleteAfterObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)DeleteAfter).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOptionInternal)DeleteAfter).ObjectType = value; } + + /// Internal Acessors for DeleteAfter + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal.DeleteAfter { get => (this._deleteAfter = this._deleteAfter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption()); set { {_deleteAfter = value;} } } + + /// Internal Acessors for SourceDataStore + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycleInternal.SourceDataStore { get => (this._sourceDataStore = this._sourceDataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set { {_sourceDataStore = value;} } } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase _sourceDataStore; + + /// DataStoreInfo base + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase SourceDataStore { get => (this._sourceDataStore = this._sourceDataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set => this._sourceDataStore = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string SourceDataStoreObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)SourceDataStore).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)SourceDataStore).ObjectType = value; } + + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes SourceDataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)SourceDataStore).DataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)SourceDataStore).DataStoreType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[] _targetDataStoreCopySetting; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[] TargetDataStoreCopySetting { get => this._targetDataStoreCopySetting; set => this._targetDataStoreCopySetting = value; } + + /// Creates an new instance. + public SourceLifeCycle() + { + + } + } + /// Source LifeCycle + public partial interface ISourceLifeCycle : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Duration of deletion after given timespan + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Duration of deletion after given timespan", + SerializedName = @"duration", + PossibleTypes = new [] { typeof(string) })] + string DeleteAfterDuration { get; set; } + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string DeleteAfterObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string SourceDataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"type of datastore; SnapShot/Hot/Archive", + SerializedName = @"dataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes SourceDataStoreType { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"targetDataStoreCopySettings", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[] TargetDataStoreCopySetting { get; set; } + + } + /// Source LifeCycle + internal partial interface ISourceLifeCycleInternal + + { + /// Delete Option + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDeleteOption DeleteAfter { get; set; } + /// Duration of deletion after given timespan + string DeleteAfterDuration { get; set; } + /// Type of the specific object - used for deserializing + string DeleteAfterObjectType { get; set; } + /// DataStoreInfo base + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase SourceDataStore { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string SourceDataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes SourceDataStoreType { get; set; } + + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting[] TargetDataStoreCopySetting { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.json.cs new file mode 100644 index 000000000000..1a059a357383 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/SourceLifeCycle.json.cs @@ -0,0 +1,113 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Source LifeCycle + public partial class SourceLifeCycle + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ISourceLifeCycle FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new SourceLifeCycle(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal SourceLifeCycle(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_deleteAfter = If( json?.PropertyT("deleteAfter"), out var __jsonDeleteAfter) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DeleteOption.FromJson(__jsonDeleteAfter) : DeleteAfter;} + {_sourceDataStore = If( json?.PropertyT("sourceDataStore"), out var __jsonSourceDataStore) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase.FromJson(__jsonSourceDataStore) : SourceDataStore;} + {_targetDataStoreCopySetting = If( json?.PropertyT("targetDataStoreCopySettings"), out var __jsonTargetDataStoreCopySettings) ? If( __jsonTargetDataStoreCopySettings as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TargetCopySetting.FromJson(__u) )) ))() : null : TargetDataStoreCopySetting;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._deleteAfter ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._deleteAfter.ToJson(null,serializationMode) : null, "deleteAfter" ,container.Add ); + AddIf( null != this._sourceDataStore ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._sourceDataStore.ToJson(null,serializationMode) : null, "sourceDataStore" ,container.Add ); + if (null != this._targetDataStoreCopySetting) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._targetDataStoreCopySetting ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("targetDataStoreCopySettings",__w); + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.PowerShell.cs new file mode 100644 index 000000000000..fd135ea26581 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Storage setting + [System.ComponentModel.TypeConverter(typeof(StorageSettingTypeConverter))] + public partial class StorageSetting + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new StorageSetting(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new StorageSetting(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal StorageSetting(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).Type = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes?) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).Type, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes?) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal StorageSetting(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).Type = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes?) content.GetValueForProperty("Type",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).Type, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes?) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Storage setting + [System.ComponentModel.TypeConverter(typeof(StorageSettingTypeConverter))] + public partial interface IStorageSetting + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.TypeConverter.cs new file mode 100644 index 000000000000..33092acca44e --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class StorageSettingTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return StorageSetting.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return StorageSetting.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return StorageSetting.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.cs new file mode 100644 index 000000000000..ce0df94a90ba --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.cs @@ -0,0 +1,63 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Storage setting + public partial class StorageSetting : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSettingInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes? _dataStoreType; + + /// Gets or sets the type of the datastore. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes? DataStoreType { get => this._dataStoreType; set => this._dataStoreType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes? _type; + + /// Gets or sets the type. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes? Type { get => this._type; set => this._type = value; } + + /// Creates an new instance. + public StorageSetting() + { + + } + } + /// Storage setting + public partial interface IStorageSetting : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Gets or sets the type of the datastore. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets the type of the datastore.", + SerializedName = @"dataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes? DataStoreType { get; set; } + /// Gets or sets the type. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Gets or sets the type.", + SerializedName = @"type", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes? Type { get; set; } + + } + /// Storage setting + internal partial interface IStorageSettingInternal + + { + /// Gets or sets the type of the datastore. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes? DataStoreType { get; set; } + /// Gets or sets the type. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes? Type { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.json.cs new file mode 100644 index 000000000000..d3fce3636246 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/StorageSetting.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Storage setting + public partial class StorageSetting + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new StorageSetting(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal StorageSetting(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_type = If( json?.PropertyT("type"), out var __jsonType) ? (string)__jsonType : (string)Type;} + {_dataStoreType = If( json?.PropertyT("dataStoreType"), out var __jsonDataStoreType) ? (string)__jsonDataStoreType : (string)DataStoreType;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._type)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._type.ToString()) : null, "type" ,container.Add ); + AddIf( null != (((object)this._dataStoreType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._dataStoreType.ToString()) : null, "dataStoreType" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.PowerShell.cs new file mode 100644 index 000000000000..5b964813c544 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.PowerShell.cs @@ -0,0 +1,143 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Tagging criteria + [System.ComponentModel.TypeConverter(typeof(TaggingCriteriaTypeConverter))] + public partial class TaggingCriteria + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new TaggingCriteria(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new TaggingCriteria(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal TaggingCriteria(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).Criterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[]) content.GetValueForProperty("Criterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).Criterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteriaTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).IsDefault = (bool) content.GetValueForProperty("IsDefault",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).IsDefault, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TaggingPriority = (long) content.GetValueForProperty("TaggingPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TaggingPriority, (__y)=> (long) global::System.Convert.ChangeType(__y, typeof(long))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal TaggingCriteria(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag) content.GetValueForProperty("TagInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTagTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).Criterion = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[]) content.GetValueForProperty("Criterion",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).Criterion, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteriaTypeConverter.ConvertFrom)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).IsDefault = (bool) content.GetValueForProperty("IsDefault",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).IsDefault, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TaggingPriority = (long) content.GetValueForProperty("TaggingPriority",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TaggingPriority, (__y)=> (long) global::System.Convert.ChangeType(__y, typeof(long))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoETag = (string) content.GetValueForProperty("TagInfoETag",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoETag, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoId = (string) content.GetValueForProperty("TagInfoId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoTagName = (string) content.GetValueForProperty("TagInfoTagName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal)this).TagInfoTagName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Tagging criteria + [System.ComponentModel.TypeConverter(typeof(TaggingCriteriaTypeConverter))] + public partial interface ITaggingCriteria + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.TypeConverter.cs new file mode 100644 index 000000000000..cb7e46f35018 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class TaggingCriteriaTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return TaggingCriteria.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return TaggingCriteria.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return TaggingCriteria.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.cs new file mode 100644 index 000000000000..c8bebd59e311 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.cs @@ -0,0 +1,140 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Tagging criteria + public partial class TaggingCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[] _criterion; + + /// Criteria which decides whether the tag can be applied to a triggered backup. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[] Criterion { get => this._criterion; set => this._criterion = value; } + + /// Backing field for property. + private bool _isDefault; + + /// Specifies if tag is default. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool IsDefault { get => this._isDefault; set => this._isDefault = value; } + + /// Internal Acessors for TagInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal.TagInfo { get => (this._tagInfo = this._tagInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag()); set { {_tagInfo = value;} } } + + /// Internal Acessors for TagInfoETag + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal.TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag = value; } + + /// Internal Acessors for TagInfoId + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteriaInternal.TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag _tagInfo; + + /// Retention tag information + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag TagInfo { get => (this._tagInfo = this._tagInfo ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag()); set => this._tagInfo = value; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoETag { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).ETag; } + + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoId { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).Id; } + + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TagInfoTagName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).TagName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTagInternal)TagInfo).TagName = value; } + + /// Backing field for property. + private long _taggingPriority; + + /// Retention Tag priority. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public long TaggingPriority { get => this._taggingPriority; set => this._taggingPriority = value; } + + /// Creates an new instance. + public TaggingCriteria() + { + + } + } + /// Tagging criteria + public partial interface ITaggingCriteria : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Criteria which decides whether the tag can be applied to a triggered backup. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Criteria which decides whether the tag can be applied to a triggered backup.", + SerializedName = @"criteria", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria),typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IScheduleBasedBackupCriteria) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[] Criterion { get; set; } + /// Specifies if tag is default. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Specifies if tag is default.", + SerializedName = @"isDefault", + PossibleTypes = new [] { typeof(bool) })] + bool IsDefault { get; set; } + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + string TagInfoETag { get; } + /// Retention Tag version. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = true, + Description = @"Retention Tag version.", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string TagInfoId { get; } + /// Retention Tag Name to relate it to retention rule. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention Tag Name to relate it to retention rule.", + SerializedName = @"tagName", + PossibleTypes = new [] { typeof(string) })] + string TagInfoTagName { get; set; } + /// Retention Tag priority. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention Tag priority.", + SerializedName = @"taggingPriority", + PossibleTypes = new [] { typeof(long) })] + long TaggingPriority { get; set; } + + } + /// Tagging criteria + internal partial interface ITaggingCriteriaInternal + + { + /// Criteria which decides whether the tag can be applied to a triggered backup. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria[] Criterion { get; set; } + /// Specifies if tag is default. + bool IsDefault { get; set; } + /// Retention tag information + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRetentionTag TagInfo { get; set; } + /// Retention Tag version. + string TagInfoETag { get; set; } + /// Retention Tag version. + string TagInfoId { get; set; } + /// Retention Tag Name to relate it to retention rule. + string TagInfoTagName { get; set; } + /// Retention Tag priority. + long TaggingPriority { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.json.cs new file mode 100644 index 000000000000..8532cff8e41c --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TaggingCriteria.json.cs @@ -0,0 +1,115 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Tagging criteria + public partial class TaggingCriteria + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITaggingCriteria FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new TaggingCriteria(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal TaggingCriteria(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_tagInfo = If( json?.PropertyT("tagInfo"), out var __jsonTagInfo) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RetentionTag.FromJson(__jsonTagInfo) : TagInfo;} + {_criterion = If( json?.PropertyT("criteria"), out var __jsonCriteria) ? If( __jsonCriteria as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupCriteria) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupCriteria.FromJson(__u) )) ))() : null : Criterion;} + {_isDefault = If( json?.PropertyT("isDefault"), out var __jsonIsDefault) ? (bool)__jsonIsDefault : IsDefault;} + {_taggingPriority = If( json?.PropertyT("taggingPriority"), out var __jsonTaggingPriority) ? (long)__jsonTaggingPriority : TaggingPriority;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._tagInfo ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._tagInfo.ToJson(null,serializationMode) : null, "tagInfo" ,container.Add ); + if (null != this._criterion) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._criterion ) + { + AddIf(__x?.ToJson(null, serializationMode) ,__w.Add); + } + container.Add("criteria",__w); + } + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean(this._isDefault), "isDefault" ,container.Add ); + AddIf( (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNumber(this._taggingPriority), "taggingPriority" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.PowerShell.cs new file mode 100644 index 000000000000..304087bffc6d --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.PowerShell.cs @@ -0,0 +1,141 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Target copy settings + [System.ComponentModel.TypeConverter(typeof(TargetCopySettingTypeConverter))] + public partial class TargetCopySetting + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new TargetCopySetting(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new TargetCopySetting(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal TargetCopySetting(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption) content.GetValueForProperty("CopyAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("DataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfterObjectType = (string) content.GetValueForProperty("CopyAfterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreObjectType = (string) content.GetValueForProperty("DataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal TargetCopySetting(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfter = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption) content.GetValueForProperty("CopyAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfter, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStore = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase) content.GetValueForProperty("DataStore",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStore, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfterObjectType = (string) content.GetValueForProperty("CopyAfterObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).CopyAfterObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) content.GetValueForProperty("DataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreObjectType = (string) content.GetValueForProperty("DataStoreObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal)this).DataStoreObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Target copy settings + [System.ComponentModel.TypeConverter(typeof(TargetCopySettingTypeConverter))] + public partial interface ITargetCopySetting + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.TypeConverter.cs new file mode 100644 index 000000000000..3a799e2c40b9 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class TargetCopySettingTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return TargetCopySetting.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return TargetCopySetting.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return TargetCopySetting.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.cs new file mode 100644 index 000000000000..288d0e3166aa --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.cs @@ -0,0 +1,95 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Target copy settings + public partial class TargetCopySetting : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption _copyAfter; + + /// It can be CustomCopyOption or ImmediateCopyOption. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption CopyAfter { get => (this._copyAfter = this._copyAfter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption()); set => this._copyAfter = value; } + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string CopyAfterObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)CopyAfter).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOptionInternal)CopyAfter).ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase _dataStore; + + /// Info of target datastore + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DataStore { get => (this._dataStore = this._dataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set => this._dataStore = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string DataStoreObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).ObjectType = value; } + + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).DataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBaseInternal)DataStore).DataStoreType = value; } + + /// Internal Acessors for CopyAfter + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal.CopyAfter { get => (this._copyAfter = this._copyAfter ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption()); set { {_copyAfter = value;} } } + + /// Internal Acessors for DataStore + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySettingInternal.DataStore { get => (this._dataStore = this._dataStore ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase()); set { {_dataStore = value;} } } + + /// Creates an new instance. + public TargetCopySetting() + { + + } + } + /// Target copy settings + public partial interface ITargetCopySetting : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string CopyAfterObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string DataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"type of datastore; SnapShot/Hot/Archive", + SerializedName = @"dataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + + } + /// Target copy settings + internal partial interface ITargetCopySettingInternal + + { + /// It can be CustomCopyOption or ImmediateCopyOption. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICopyOption CopyAfter { get; set; } + /// Type of the specific object - used for deserializing + string CopyAfterObjectType { get; set; } + /// Info of target datastore + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDataStoreInfoBase DataStore { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string DataStoreObjectType { get; set; } + /// type of datastore; SnapShot/Hot/Archive + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes DataStoreType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.json.cs new file mode 100644 index 000000000000..f3e5c39102a5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetCopySetting.json.cs @@ -0,0 +1,103 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Target copy settings + public partial class TargetCopySetting + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetCopySetting FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new TargetCopySetting(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal TargetCopySetting(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_copyAfter = If( json?.PropertyT("copyAfter"), out var __jsonCopyAfter) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CopyOption.FromJson(__jsonCopyAfter) : CopyAfter;} + {_dataStore = If( json?.PropertyT("dataStore"), out var __jsonDataStore) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.DataStoreInfoBase.FromJson(__jsonDataStore) : DataStore;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._copyAfter ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._copyAfter.ToJson(null,serializationMode) : null, "copyAfter" ,container.Add ); + AddIf( null != this._dataStore ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._dataStore.ToJson(null,serializationMode) : null, "dataStore" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.PowerShell.cs new file mode 100644 index 000000000000..2db052ee6dbd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.PowerShell.cs @@ -0,0 +1,137 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// Class encapsulating target details, used where the destination is not a datasource + /// + [System.ComponentModel.TypeConverter(typeof(TargetDetailsTypeConverter))] + public partial class TargetDetails + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new TargetDetails(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new TargetDetails(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal TargetDetails(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).FilePrefix = (string) content.GetValueForProperty("FilePrefix",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).FilePrefix, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).RestoreTargetLocationType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) content.GetValueForProperty("RestoreTargetLocationType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).RestoreTargetLocationType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).Url = (string) content.GetValueForProperty("Url",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).Url, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal TargetDetails(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).FilePrefix = (string) content.GetValueForProperty("FilePrefix",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).FilePrefix, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).RestoreTargetLocationType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) content.GetValueForProperty("RestoreTargetLocationType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).RestoreTargetLocationType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).Url = (string) content.GetValueForProperty("Url",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal)this).Url, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + /// Class encapsulating target details, used where the destination is not a datasource + [System.ComponentModel.TypeConverter(typeof(TargetDetailsTypeConverter))] + public partial interface ITargetDetails + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.TypeConverter.cs new file mode 100644 index 000000000000..7225fa692560 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class TargetDetailsTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return TargetDetails.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return TargetDetails.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return TargetDetails.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.cs new file mode 100644 index 000000000000..52e596c831b4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.cs @@ -0,0 +1,108 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Class encapsulating target details, used where the destination is not a datasource + /// + public partial class TargetDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetailsInternal + { + + /// Backing field for property. + private string _filePrefix; + + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string FilePrefix { get => this._filePrefix; set => this._filePrefix = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType _restoreTargetLocationType; + + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType RestoreTargetLocationType { get => this._restoreTargetLocationType; set => this._restoreTargetLocationType = value; } + + /// Backing field for property. + private string _url; + + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Url { get => this._url; set => this._url = value; } + + /// Creates an new instance. + public TargetDetails() + { + + } + } + /// Class encapsulating target details, used where the destination is not a datasource + public partial interface ITargetDetails : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Restore operation may create multiple files inside location pointed by Url + Below will be the common prefix for all of them", + SerializedName = @"filePrefix", + PossibleTypes = new [] { typeof(string) })] + string FilePrefix { get; set; } + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Denotes the target location where the data will be restored, + string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType}", + SerializedName = @"restoreTargetLocationType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType RestoreTargetLocationType { get; set; } + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Url denoting the restore destination. It can point to container / file share etc", + SerializedName = @"url", + PossibleTypes = new [] { typeof(string) })] + string Url { get; set; } + + } + /// Class encapsulating target details, used where the destination is not a datasource + internal partial interface ITargetDetailsInternal + + { + /// + /// Restore operation may create multiple files inside location pointed by Url + /// Below will be the common prefix for all of them + /// + string FilePrefix { get; set; } + /// + /// Denotes the target location where the data will be restored, + /// string value for the enum {Microsoft.Internal.AzureBackup.DataProtection.Common.Interface.RestoreTargetLocationType} + /// + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType RestoreTargetLocationType { get; set; } + /// + /// Url denoting the restore destination. It can point to container / file share etc + /// + string Url { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.json.cs new file mode 100644 index 000000000000..36baf65a6107 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TargetDetails.json.cs @@ -0,0 +1,107 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Class encapsulating target details, used where the destination is not a datasource + /// + public partial class TargetDetails + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITargetDetails FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new TargetDetails(json) : null; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal TargetDetails(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_filePrefix = If( json?.PropertyT("filePrefix"), out var __jsonFilePrefix) ? (string)__jsonFilePrefix : (string)FilePrefix;} + {_restoreTargetLocationType = If( json?.PropertyT("restoreTargetLocationType"), out var __jsonRestoreTargetLocationType) ? (string)__jsonRestoreTargetLocationType : (string)RestoreTargetLocationType;} + {_url = If( json?.PropertyT("url"), out var __jsonUrl) ? (string)__jsonUrl : (string)Url;} + AfterFromJson(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._filePrefix)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._filePrefix.ToString()) : null, "filePrefix" ,container.Add ); + AddIf( null != (((object)this._restoreTargetLocationType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._restoreTargetLocationType.ToString()) : null, "restoreTargetLocationType" ,container.Add ); + AddIf( null != (((object)this._url)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._url.ToString()) : null, "url" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.PowerShell.cs new file mode 100644 index 000000000000..f32ec9f6b7fd --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.PowerShell.cs @@ -0,0 +1,139 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Trigger backup request + [System.ComponentModel.TypeConverter(typeof(TriggerBackupRequestTypeConverter))] + public partial class TriggerBackupRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new TriggerBackupRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new TriggerBackupRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal TriggerBackupRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions) content.GetValueForProperty("BackupRuleOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptionsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionTriggerOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption) content.GetValueForProperty("BackupRuleOptionTriggerOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionTriggerOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionRuleName = (string) content.GetValueForProperty("BackupRuleOptionRuleName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionRuleName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).TriggerOptionRetentionTagOverride = (string) content.GetValueForProperty("TriggerOptionRetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).TriggerOptionRetentionTagOverride, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal TriggerBackupRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions) content.GetValueForProperty("BackupRuleOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptionsTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionTriggerOption = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption) content.GetValueForProperty("BackupRuleOptionTriggerOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionTriggerOption, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdhocBackupTriggerOptionTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionRuleName = (string) content.GetValueForProperty("BackupRuleOptionRuleName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).BackupRuleOptionRuleName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).TriggerOptionRetentionTagOverride = (string) content.GetValueForProperty("TriggerOptionRetentionTagOverride",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal)this).TriggerOptionRetentionTagOverride, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + } + /// Trigger backup request + [System.ComponentModel.TypeConverter(typeof(TriggerBackupRequestTypeConverter))] + public partial interface ITriggerBackupRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.TypeConverter.cs new file mode 100644 index 000000000000..d059e53ff0ef --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class TriggerBackupRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return TriggerBackupRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return TriggerBackupRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return TriggerBackupRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.cs new file mode 100644 index 000000000000..c6dac6ae634a --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.cs @@ -0,0 +1,71 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger backup request + public partial class TriggerBackupRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions _backupRuleOption; + + /// Name for the Rule of the Policy which needs to be applied for this backup + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions BackupRuleOption { get => (this._backupRuleOption = this._backupRuleOption ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptions()); set => this._backupRuleOption = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string BackupRuleOptionRuleName { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).RuleName; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).RuleName = value; } + + /// Internal Acessors for BackupRuleOption + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal.BackupRuleOption { get => (this._backupRuleOption = this._backupRuleOption ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptions()); set { {_backupRuleOption = value;} } } + + /// Internal Acessors for BackupRuleOptionTriggerOption + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequestInternal.BackupRuleOptionTriggerOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).TriggerOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).TriggerOption = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string TriggerOptionRetentionTagOverride { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).TriggerOptionRetentionTagOverride; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptionsInternal)BackupRuleOption).TriggerOptionRetentionTagOverride = value; } + + /// Creates an new instance. + public TriggerBackupRequest() + { + + } + } + /// Trigger backup request + public partial interface ITriggerBackupRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"ruleName", + PossibleTypes = new [] { typeof(string) })] + string BackupRuleOptionRuleName { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"retentionTagOverride", + PossibleTypes = new [] { typeof(string) })] + string TriggerOptionRetentionTagOverride { get; set; } + + } + /// Trigger backup request + internal partial interface ITriggerBackupRequestInternal + + { + /// Name for the Rule of the Policy which needs to be applied for this backup + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdHocBackupRuleOptions BackupRuleOption { get; set; } + + string BackupRuleOptionRuleName { get; set; } + /// Adhoc backup trigger option + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAdhocBackupTriggerOption BackupRuleOptionTriggerOption { get; set; } + + string TriggerOptionRetentionTagOverride { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.json.cs new file mode 100644 index 000000000000..1dec8e9dc336 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerBackupRequest.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger backup request + public partial class TriggerBackupRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new TriggerBackupRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._backupRuleOption ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._backupRuleOption.ToJson(null,serializationMode) : null, "backupRuleOptions" ,container.Add ); + AfterToJson(ref container); + return container; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal TriggerBackupRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_backupRuleOption = If( json?.PropertyT("backupRuleOptions"), out var __jsonBackupRuleOptions) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AdHocBackupRuleOptions.FromJson(__jsonBackupRuleOptions) : BackupRuleOption;} + AfterFromJson(json); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.PowerShell.cs new file mode 100644 index 000000000000..2a63e4093d91 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.PowerShell.cs @@ -0,0 +1,131 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Trigger context + [System.ComponentModel.TypeConverter(typeof(TriggerContextTypeConverter))] + public partial class TriggerContext + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new TriggerContext(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new TriggerContext(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal TriggerContext(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal TriggerContext(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType = (string) content.GetValueForProperty("ObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal)this).ObjectType, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + } + /// Trigger context + [System.ComponentModel.TypeConverter(typeof(TriggerContextTypeConverter))] + public partial interface ITriggerContext + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.TypeConverter.cs new file mode 100644 index 000000000000..bd40c5a4d7f4 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class TriggerContextTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return TriggerContext.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return TriggerContext.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return TriggerContext.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.cs new file mode 100644 index 000000000000..ffee746138bb --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger context + public partial class TriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContextInternal + { + + /// Backing field for property. + private string _objectType; + + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ObjectType { get => this._objectType; set => this._objectType = value; } + + /// Creates an new instance. + public TriggerContext() + { + + } + } + /// Trigger context + public partial interface ITriggerContext : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Type of the specific object - used for deserializing + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of the specific object - used for deserializing", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string ObjectType { get; set; } + + } + /// Trigger context + internal partial interface ITriggerContextInternal + + { + /// Type of the specific object - used for deserializing + string ObjectType { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.json.cs new file mode 100644 index 000000000000..6589f92362af --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/TriggerContext.json.cs @@ -0,0 +1,120 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger context + public partial class TriggerContext + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext. + /// Note: the Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext interface is polymorphic, + /// and the precise model class that will get deserialized is determined at runtime based on the payload. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerContext FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + if (!(node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json)) + { + return null; + } + // Polymorphic type -- select the appropriate constructor using the discriminator + + switch ( json.StringProperty("objectType") ) + { + case "ScheduleBasedTriggerContext": + { + return new ScheduleBasedTriggerContext(json); + } + case "AdhocBasedTriggerContext": + { + return new AdhocBasedTriggerContext(json); + } + } + return new TriggerContext(json); + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._objectType)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._objectType.ToString()) : null, "objectType" ,container.Add ); + AfterToJson(ref container); + return container; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal TriggerContext(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_objectType = If( json?.PropertyT("objectType"), out var __jsonObjectType) ? (string)__jsonObjectType : (string)ObjectType;} + AfterFromJson(json); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.PowerShell.cs new file mode 100644 index 000000000000..80706636cb28 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.PowerShell.cs @@ -0,0 +1,147 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// Error object used by layers that have access to localized content, and propogate that to user + /// + [System.ComponentModel.TypeConverter(typeof(UserFacingErrorTypeConverter))] + public partial class UserFacingError + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new UserFacingError(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new UserFacingError(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal UserFacingError(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).InnerError = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) content.GetValueForProperty("InnerError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).InnerError, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsRetryable = (bool?) content.GetValueForProperty("IsRetryable",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsRetryable, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsUserError = (bool?) content.GetValueForProperty("IsUserError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsUserError, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).RecommendedAction = (string[]) content.GetValueForProperty("RecommendedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).RecommendedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal UserFacingError(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Code = (string) content.GetValueForProperty("Code",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Code, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).InnerError = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) content.GetValueForProperty("InnerError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).InnerError, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerErrorTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsRetryable = (bool?) content.GetValueForProperty("IsRetryable",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsRetryable, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsUserError = (bool?) content.GetValueForProperty("IsUserError",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).IsUserError, (__y)=> (bool) global::System.Convert.ChangeType(__y, typeof(bool))); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Message = (string) content.GetValueForProperty("Message",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Message, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).RecommendedAction = (string[]) content.GetValueForProperty("RecommendedAction",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).RecommendedAction, __y => TypeConverterExtensions.SelectToArray(__y, global::System.Convert.ToString)); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Target = (string) content.GetValueForProperty("Target",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Target, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Detail = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[]) content.GetValueForProperty("Detail",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal)this).Detail, __y => TypeConverterExtensions.SelectToArray(__y, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingErrorTypeConverter.ConvertFrom)); + AfterDeserializePSObject(content); + } + } + /// Error object used by layers that have access to localized content, and propogate that to user + [System.ComponentModel.TypeConverter(typeof(UserFacingErrorTypeConverter))] + public partial interface IUserFacingError + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.TypeConverter.cs new file mode 100644 index 000000000000..5b66605f49de --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class UserFacingErrorTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return UserFacingError.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return UserFacingError.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return UserFacingError.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.cs new file mode 100644 index 000000000000..e05488c9eb45 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.cs @@ -0,0 +1,166 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Error object used by layers that have access to localized content, and propogate that to user + /// + public partial class UserFacingError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingErrorInternal + { + + /// Backing field for property. + private string _code; + + /// Unique code for this error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Code { get => this._code; set => this._code = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] _detail; + + /// Additional related Errors + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] Detail { get => this._detail; set => this._detail = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError _innerError; + + /// Inner Error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError InnerError { get => (this._innerError = this._innerError ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError()); set => this._innerError = value; } + + /// Backing field for property. + private bool? _isRetryable; + + /// Whether the operation will be retryable or not + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? IsRetryable { get => this._isRetryable; set => this._isRetryable = value; } + + /// Backing field for property. + private bool? _isUserError; + + /// Whether the operation is due to a user error or service error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public bool? IsUserError { get => this._isUserError; set => this._isUserError = value; } + + /// Backing field for property. + private string _message; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Message { get => this._message; set => this._message = value; } + + /// Backing field for property. + private string[] _recommendedAction; + + /// RecommendedAction � Localised. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string[] RecommendedAction { get => this._recommendedAction; set => this._recommendedAction = value; } + + /// Backing field for property. + private string _target; + + /// Target of the error. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Target { get => this._target; set => this._target = value; } + + /// Creates an new instance. + public UserFacingError() + { + + } + } + /// Error object used by layers that have access to localized content, and propogate that to user + public partial interface IUserFacingError : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Unique code for this error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Unique code for this error", + SerializedName = @"code", + PossibleTypes = new [] { typeof(string) })] + string Code { get; set; } + /// Additional related Errors + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Additional related Errors", + SerializedName = @"details", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] Detail { get; set; } + /// Inner Error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Inner Error", + SerializedName = @"innerError", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError InnerError { get; set; } + /// Whether the operation will be retryable or not + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Whether the operation will be retryable or not", + SerializedName = @"isRetryable", + PossibleTypes = new [] { typeof(bool) })] + bool? IsRetryable { get; set; } + /// Whether the operation is due to a user error or service error + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Whether the operation is due to a user error or service error", + SerializedName = @"isUserError", + PossibleTypes = new [] { typeof(bool) })] + bool? IsUserError { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"message", + PossibleTypes = new [] { typeof(string) })] + string Message { get; set; } + /// RecommendedAction � Localised. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"RecommendedAction � Localised.", + SerializedName = @"recommendedAction", + PossibleTypes = new [] { typeof(string) })] + string[] RecommendedAction { get; set; } + /// Target of the error. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target of the error.", + SerializedName = @"target", + PossibleTypes = new [] { typeof(string) })] + string Target { get; set; } + + } + /// Error object used by layers that have access to localized content, and propogate that to user + internal partial interface IUserFacingErrorInternal + + { + /// Unique code for this error + string Code { get; set; } + /// Additional related Errors + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError[] Detail { get; set; } + /// Inner Error + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IInnerError InnerError { get; set; } + /// Whether the operation will be retryable or not + bool? IsRetryable { get; set; } + /// Whether the operation is due to a user error or service error + bool? IsUserError { get; set; } + + string Message { get; set; } + /// RecommendedAction � Localised. + string[] RecommendedAction { get; set; } + /// Target of the error. + string Target { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.json.cs new file mode 100644 index 000000000000..4f811d35a606 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/UserFacingError.json.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Error object used by layers that have access to localized content, and propogate that to user + /// + public partial class UserFacingError + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new UserFacingError(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._code)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._code.ToString()) : null, "code" ,container.Add ); + AddIf( null != this._innerError ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._innerError.ToJson(null,serializationMode) : null, "innerError" ,container.Add ); + AddIf( null != this._isRetryable ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._isRetryable) : null, "isRetryable" ,container.Add ); + AddIf( null != this._isUserError ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode)new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonBoolean((bool)this._isUserError) : null, "isUserError" ,container.Add ); + AddIf( null != (((object)this._message)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._message.ToString()) : null, "message" ,container.Add ); + if (null != this._recommendedAction) + { + var __w = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __x in this._recommendedAction ) + { + AddIf(null != (((object)__x)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(__x.ToString()) : null ,__w.Add); + } + container.Add("recommendedAction",__w); + } + AddIf( null != (((object)this._target)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._target.ToString()) : null, "target" ,container.Add ); + if (null != this._detail) + { + var __r = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.XNodeArray(); + foreach( var __s in this._detail ) + { + AddIf(__s?.ToJson(null, serializationMode) ,__r.Add); + } + container.Add("details",__r); + } + AfterToJson(ref container); + return container; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal UserFacingError(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_code = If( json?.PropertyT("code"), out var __jsonCode) ? (string)__jsonCode : (string)Code;} + {_innerError = If( json?.PropertyT("innerError"), out var __jsonInnerError) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.InnerError.FromJson(__jsonInnerError) : InnerError;} + {_isRetryable = If( json?.PropertyT("isRetryable"), out var __jsonIsRetryable) ? (bool?)__jsonIsRetryable : IsRetryable;} + {_isUserError = If( json?.PropertyT("isUserError"), out var __jsonIsUserError) ? (bool?)__jsonIsUserError : IsUserError;} + {_message = If( json?.PropertyT("message"), out var __jsonMessage) ? (string)__jsonMessage : (string)Message;} + {_recommendedAction = If( json?.PropertyT("recommendedAction"), out var __jsonRecommendedAction) ? If( __jsonRecommendedAction as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __v) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__v, (__u)=>(string) (__u is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString __t ? (string)(__t.ToString()) : null)) ))() : null : RecommendedAction;} + {_target = If( json?.PropertyT("target"), out var __jsonTarget) ? (string)__jsonTarget : (string)Target;} + {_detail = If( json?.PropertyT("details"), out var __jsonDetails) ? If( __jsonDetails as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonArray, out var __q) ? new global::System.Func(()=> global::System.Linq.Enumerable.ToArray(global::System.Linq.Enumerable.Select(__q, (__p)=>(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IUserFacingError) (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.UserFacingError.FromJson(__p) )) ))() : null : Detail;} + AfterFromJson(json); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.PowerShell.cs new file mode 100644 index 000000000000..96329dba795b --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.PowerShell.cs @@ -0,0 +1,133 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Validate for backup request + [System.ComponentModel.TypeConverter(typeof(ValidateForBackupRequestTypeConverter))] + public partial class ValidateForBackupRequest + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ValidateForBackupRequest(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ValidateForBackupRequest(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ValidateForBackupRequest(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequestInternal)this).BackupInstance = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) content.GetValueForProperty("BackupInstance",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequestInternal)this).BackupInstance, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceTypeConverter.ConvertFrom); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ValidateForBackupRequest(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequestInternal)this).BackupInstance = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) content.GetValueForProperty("BackupInstance",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequestInternal)this).BackupInstance, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceTypeConverter.ConvertFrom); + AfterDeserializePSObject(content); + } + } + /// Validate for backup request + [System.ComponentModel.TypeConverter(typeof(ValidateForBackupRequestTypeConverter))] + public partial interface IValidateForBackupRequest + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.TypeConverter.cs new file mode 100644 index 000000000000..960b88c960b0 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ValidateForBackupRequestTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ValidateForBackupRequest.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ValidateForBackupRequest.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ValidateForBackupRequest.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.cs new file mode 100644 index 000000000000..ca0adefc09db --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.cs @@ -0,0 +1,46 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate for backup request + public partial class ValidateForBackupRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequestInternal + { + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance _backupInstance; + + /// Backup instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance BackupInstance { get => (this._backupInstance = this._backupInstance ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance()); set => this._backupInstance = value; } + + /// Creates an new instance. + public ValidateForBackupRequest() + { + + } + } + /// Validate for backup request + public partial interface IValidateForBackupRequest : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Backup instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Backup instance", + SerializedName = @"backupInstance", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance BackupInstance { get; set; } + + } + /// Validate for backup request + internal partial interface IValidateForBackupRequestInternal + + { + /// Backup instance + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance BackupInstance { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.json.cs new file mode 100644 index 000000000000..5dcd88017a21 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateForBackupRequest.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate for backup request + public partial class ValidateForBackupRequest + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ValidateForBackupRequest(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._backupInstance ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._backupInstance.ToJson(null,serializationMode) : null, "backupInstance" ,container.Add ); + AfterToJson(ref container); + return container; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ValidateForBackupRequest(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_backupInstance = If( json?.PropertyT("backupInstance"), out var __jsonBackupInstance) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstance.FromJson(__jsonBackupInstance) : BackupInstance;} + AfterFromJson(json); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.PowerShell.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.PowerShell.cs new file mode 100644 index 000000000000..d254448de926 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.PowerShell.cs @@ -0,0 +1,145 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// Validate restore request object + [System.ComponentModel.TypeConverter(typeof(ValidateRestoreRequestObjectTypeConverter))] + public partial class ValidateRestoreRequestObject + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ValidateRestoreRequestObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ValidateRestoreRequestObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ValidateRestoreRequestObject(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObject = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest) content.GetValueForProperty("RestoreRequestObject",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObject, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequestTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectRestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreRequestObjectRestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectRestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectType = (string) content.GetValueForProperty("RestoreRequestObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectSourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("RestoreRequestObjectSourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectSourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ValidateRestoreRequestObject(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObject = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest) content.GetValueForProperty("RestoreRequestObject",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObject, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequestTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectRestoreTargetInfo = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase) content.GetValueForProperty("RestoreRequestObjectRestoreTargetInfo",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectRestoreTargetInfo, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.RestoreTargetInfoBaseTypeConverter.ConvertFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectType = (string) content.GetValueForProperty("RestoreRequestObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectSourceDataStoreType = (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) content.GetValueForProperty("RestoreRequestObjectSourceDataStoreType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreRequestObjectSourceDataStoreType, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType.CreateFrom); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRecoveryOption = (string) content.GetValueForProperty("RestoreTargetInfoRecoveryOption",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRecoveryOption, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoObjectType = (string) content.GetValueForProperty("RestoreTargetInfoObjectType",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoObjectType, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRestoreLocation = (string) content.GetValueForProperty("RestoreTargetInfoRestoreLocation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal)this).RestoreTargetInfoRestoreLocation, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + } + /// Validate restore request object + [System.ComponentModel.TypeConverter(typeof(ValidateRestoreRequestObjectTypeConverter))] + public partial interface IValidateRestoreRequestObject + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.TypeConverter.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.TypeConverter.cs new file mode 100644 index 000000000000..ff2c74e749dc --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.TypeConverter.cs @@ -0,0 +1,142 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ValidateRestoreRequestObjectTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ValidateRestoreRequestObject.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ValidateRestoreRequestObject.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ValidateRestoreRequestObject.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.cs new file mode 100644 index 000000000000..516b733879c5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.cs @@ -0,0 +1,118 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate restore request object + public partial class ValidateRestoreRequestObject : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal + { + + /// Internal Acessors for RestoreRequestObject + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal.RestoreRequestObject { get => (this._restoreRequestObject = this._restoreRequestObject ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest()); set { {_restoreRequestObject = value;} } } + + /// Internal Acessors for RestoreRequestObjectRestoreTargetInfo + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal.RestoreRequestObjectRestoreTargetInfo { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfo; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfo = value; } + + /// Internal Acessors for RestoreTargetInfoRecoveryOption + string Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObjectInternal.RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoRecoveryOption; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoRecoveryOption = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest _restoreRequestObject; + + /// Gets or sets the restore request object. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + internal Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest RestoreRequestObject { get => (this._restoreRequestObject = this._restoreRequestObject ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest()); set => this._restoreRequestObject = value; } + + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType RestoreRequestObjectSourceDataStoreType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).SourceDataStoreType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).SourceDataStoreType = value; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreRequestObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).ObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).ObjectType = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoObjectType { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoObjectType; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoObjectType = value; } + + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoRecoveryOption { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoRecoveryOption; } + + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Inlined)] + public string RestoreTargetInfoRestoreLocation { get => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoRestoreLocation; set => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequestInternal)RestoreRequestObject).RestoreTargetInfoRestoreLocation = value; } + + /// Creates an new instance. + public ValidateRestoreRequestObject() + { + + } + } + /// Validate restore request object + public partial interface IValidateRestoreRequestObject : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// Gets or sets the type of the source data store. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType RestoreRequestObjectSourceDataStoreType { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string RestoreRequestObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoObjectType { get; set; } + /// Recovery Option + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = true, + Description = @"Recovery Option", + SerializedName = @"recoveryOption", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoRecoveryOption { get; } + /// Target Restore region + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + string RestoreTargetInfoRestoreLocation { get; set; } + + } + /// Validate restore request object + internal partial interface IValidateRestoreRequestObjectInternal + + { + /// Gets or sets the restore request object. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest RestoreRequestObject { get; set; } + /// Gets or sets the restore target information. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IRestoreTargetInfoBase RestoreRequestObjectRestoreTargetInfo { get; set; } + /// Gets or sets the type of the source data store. + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType RestoreRequestObjectSourceDataStoreType { get; set; } + + string RestoreRequestObjectType { get; set; } + /// Type of Datasource object, used to initialize the right inherited type + string RestoreTargetInfoObjectType { get; set; } + /// Recovery Option + string RestoreTargetInfoRecoveryOption { get; set; } + /// Target Restore region + string RestoreTargetInfoRestoreLocation { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.json.cs b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.json.cs new file mode 100644 index 000000000000..bf725e5c2f29 --- /dev/null +++ b/src/DataProtection/generated/api/Models/Api202001Alpha/ValidateRestoreRequestObject.json.cs @@ -0,0 +1,101 @@ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate restore request object + public partial class ValidateRestoreRequestObject + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ValidateRestoreRequestObject(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != this._restoreRequestObject ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) this._restoreRequestObject.ToJson(null,serializationMode) : null, "restoreRequestObject" ,container.Add ); + AfterToJson(ref container); + return container; + } + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ValidateRestoreRequestObject(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_restoreRequestObject = If( json?.PropertyT("restoreRequestObject"), out var __jsonRestoreRequestObject) ? Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest.FromJson(__jsonRestoreRequestObject) : RestoreRequestObject;} + AfterFromJson(json); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..a0ff3ce075e7 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesAdhocBackupAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesAdhocBackupAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesAdhocBackupAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesAdhocBackupAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesAdhocBackupAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesAdhocBackupAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content + /// from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesAdhocBackupAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesAdhocBackupAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..65d9741b99e8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesAdhocBackupAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, + /// otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesAdhocBackupAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesAdhocBackupAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesAdhocBackupAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..b83ecbeedc91 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesAdhocBackupAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesAdhocBackupAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesAdhocBackupAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesAdhocBackupAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..c3357479749b --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesAdhocBackupAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesAdhocBackupAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesAdhocBackupAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesAdhocBackupAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesAdhocBackupAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..12e2b2076cd5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesDeleteAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesDeleteAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesDeleteAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesDeleteAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesDeleteAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesDeleteAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content from + /// a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesDeleteAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesDeleteAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..acbba4ffe73b --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesDeleteAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, + /// otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesDeleteAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesDeleteAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesDeleteAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..330895e36f7f --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesDeleteAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesDeleteAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesDeleteAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesDeleteAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..9cb45a9038e5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesDeleteAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesDeleteAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesDeleteAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesDeleteAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesDeleteAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..bdc2076e379f --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesTriggerRehydrateAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesTriggerRehydrateAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesTriggerRehydrateAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesTriggerRehydrateAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesTriggerRehydrateAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesTriggerRehydrateAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content + /// from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesTriggerRehydrateAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesTriggerRehydrateAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..1fe5b322ee91 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesTriggerRehydrateAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesTriggerRehydrateAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesTriggerRehydrateAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesTriggerRehydrateAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..3d4c24a6e7ac --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesTriggerRehydrateAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesTriggerRehydrateAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesTriggerRehydrateAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesTriggerRehydrateAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..36d8d6be766c --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRehydrateAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesTriggerRehydrateAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesTriggerRehydrateAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRehydrateAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesTriggerRehydrateAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..bb5c4477a7d8 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesTriggerRestoreAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesTriggerRestoreAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesTriggerRestoreAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesTriggerRestoreAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesTriggerRestoreAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesTriggerRestoreAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content + /// from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesTriggerRestoreAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesTriggerRestoreAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..a7ebbc57c237 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesTriggerRestoreAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a + /// type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesTriggerRestoreAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesTriggerRestoreAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesTriggerRestoreAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..1dd1763cd886 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesTriggerRestoreAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesTriggerRestoreAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesTriggerRestoreAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesTriggerRestoreAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..dfc68b8db5ee --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesTriggerRestoreAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesTriggerRestoreAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesTriggerRestoreAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesTriggerRestoreAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesTriggerRestoreAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..8b3bccda0794 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesValidateForBackupAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesValidateForBackupAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesValidateForBackupAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesValidateForBackupAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesValidateForBackupAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesValidateForBackupAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content + /// from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesValidateForBackupAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesValidateForBackupAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..76f70ab9c411 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesValidateForBackupAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesValidateForBackupAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesValidateForBackupAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesValidateForBackupAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..a096cf72e6b5 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesValidateForBackupAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesValidateForBackupAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesValidateForBackupAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesValidateForBackupAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..213b25bba946 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateForBackupAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesValidateForBackupAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesValidateForBackupAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateForBackupAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesValidateForBackupAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..2c4e0e4704b7 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,141 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(BackupInstancesValidateRestoreAcceptedResponseHeadersTypeConverter))] + public partial class BackupInstancesValidateRestoreAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal BackupInstancesValidateRestoreAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal BackupInstancesValidateRestoreAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = (string) content.GetValueForProperty("AzureAsyncOperation",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new BackupInstancesValidateRestoreAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new BackupInstancesValidateRestoreAcceptedResponseHeaders(content); + } + + /// + /// Creates a new instance of , deserializing the content + /// from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(BackupInstancesValidateRestoreAcceptedResponseHeadersTypeConverter))] + public partial interface IBackupInstancesValidateRestoreAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..6044b6f29687 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,152 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class BackupInstancesValidateRestoreAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable + /// conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return BackupInstancesValidateRestoreAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return BackupInstancesValidateRestoreAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return BackupInstancesValidateRestoreAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..fa15f54dd794 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesValidateRestoreAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _azureAsyncOperation; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string AzureAsyncOperation { get => this._azureAsyncOperation; set => this._azureAsyncOperation = value; } + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public BackupInstancesValidateRestoreAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Azure-AsyncOperation", out var __azureAsyncOperationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).AzureAsyncOperation = System.Linq.Enumerable.FirstOrDefault(__azureAsyncOperationHeader) is string __headerAzureAsyncOperationHeader ? __headerAzureAsyncOperationHeader : (string)null; + } + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IBackupInstancesValidateRestoreAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Azure-AsyncOperation", + PossibleTypes = new [] { typeof(string) })] + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IBackupInstancesValidateRestoreAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string AzureAsyncOperation { get; set; } + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..ccab68d48248 --- /dev/null +++ b/src/DataProtection/generated/api/Models/BackupInstancesValidateRestoreAcceptedResponseHeaders.json.cs @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class BackupInstancesValidateRestoreAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal BackupInstancesValidateRestoreAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IBackupInstancesValidateRestoreAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new BackupInstancesValidateRestoreAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/DataProtectionIdentity.PowerShell.cs b/src/DataProtection/generated/api/Models/DataProtectionIdentity.PowerShell.cs new file mode 100644 index 000000000000..8c3bda0df36b --- /dev/null +++ b/src/DataProtection/generated/api/Models/DataProtectionIdentity.PowerShell.cs @@ -0,0 +1,154 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(DataProtectionIdentityTypeConverter))] + public partial class DataProtectionIdentity + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal DataProtectionIdentity(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).OperationId = (string) content.GetValueForProperty("OperationId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).OperationId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupInstanceName = (string) content.GetValueForProperty("BackupInstanceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupInstanceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupPolicyName = (string) content.GetValueForProperty("BackupPolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupPolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).JobId = (string) content.GetValueForProperty("JobId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).JobId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceGroupName = (string) content.GetValueForProperty("ResourceGroupName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceGroupName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceOperationGateKeepersName = (string) content.GetValueForProperty("ResourceOperationGateKeepersName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceOperationGateKeepersName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).VaultName, global::System.Convert.ToString); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal DataProtectionIdentity(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).OperationId = (string) content.GetValueForProperty("OperationId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).OperationId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupInstanceName = (string) content.GetValueForProperty("BackupInstanceName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupInstanceName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupPolicyName = (string) content.GetValueForProperty("BackupPolicyName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).BackupPolicyName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Id = (string) content.GetValueForProperty("Id",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Id, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).JobId = (string) content.GetValueForProperty("JobId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).JobId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).RecoveryPointId = (string) content.GetValueForProperty("RecoveryPointId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).RecoveryPointId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceGroupName = (string) content.GetValueForProperty("ResourceGroupName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceGroupName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceOperationGateKeepersName = (string) content.GetValueForProperty("ResourceOperationGateKeepersName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).ResourceOperationGateKeepersName, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).SubscriptionId = (string) content.GetValueForProperty("SubscriptionId",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).SubscriptionId, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).VaultName = (string) content.GetValueForProperty("VaultName",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal)this).VaultName, global::System.Convert.ToString); + AfterDeserializePSObject(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new DataProtectionIdentity(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new DataProtectionIdentity(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(DataProtectionIdentityTypeConverter))] + public partial interface IDataProtectionIdentity + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/DataProtectionIdentity.TypeConverter.cs b/src/DataProtection/generated/api/Models/DataProtectionIdentity.TypeConverter.cs new file mode 100644 index 000000000000..69731332b35f --- /dev/null +++ b/src/DataProtection/generated/api/Models/DataProtectionIdentity.TypeConverter.cs @@ -0,0 +1,157 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class DataProtectionIdentityTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + // we allow string conversion too. + if (type == typeof(global::System.String)) + { + return true; + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + // support direct string to id type conversion. + if (type == typeof(global::System.String)) + { + return new DataProtectionIdentity { Id = sourceValue }; + } + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return DataProtectionIdentity.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return DataProtectionIdentity.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return DataProtectionIdentity.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/DataProtectionIdentity.cs b/src/DataProtection/generated/api/Models/DataProtectionIdentity.cs new file mode 100644 index 000000000000..79abfb2be76f --- /dev/null +++ b/src/DataProtection/generated/api/Models/DataProtectionIdentity.cs @@ -0,0 +1,221 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DataProtectionIdentity : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentityInternal + { + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Backing field for property. + private string _backupPolicyName; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string BackupPolicyName { get => this._backupPolicyName; set => this._backupPolicyName = value; } + + /// Backing field for property. + private string _id; + + /// Resource identity path + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Id { get => this._id; set => this._id = value; } + + /// Backing field for property. + private string _jobId; + + /// + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string JobId { get => this._jobId; set => this._jobId = value; } + + /// Backing field for property. + private string _location; + + /// The location in which uniqueness will be verified. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private string _operationId; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string OperationId { get => this._operationId; set => this._operationId = value; } + + /// Backing field for property. + private string _recoveryPointId; + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string RecoveryPointId { get => this._recoveryPointId; set => this._recoveryPointId = value; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _resourceOperationGateKeepersName; + + /// The name of the ResourceOperationGateKeeper + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string ResourceOperationGateKeepersName { get => this._resourceOperationGateKeepersName; set => this._resourceOperationGateKeepersName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// Creates an new instance. + public DataProtectionIdentity() + { + + } + } + public partial interface IDataProtectionIdentity : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable + { + /// The name of the backup instance + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + string BackupInstanceName { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"backupPolicyName", + PossibleTypes = new [] { typeof(string) })] + string BackupPolicyName { get; set; } + /// Resource identity path + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource identity path", + SerializedName = @"id", + PossibleTypes = new [] { typeof(string) })] + string Id { get; set; } + /// + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).", + SerializedName = @"jobId", + PossibleTypes = new [] { typeof(string) })] + string JobId { get; set; } + /// The location in which uniqueness will be verified. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The location in which uniqueness will be verified.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"operationId", + PossibleTypes = new [] { typeof(string) })] + string OperationId { get; set; } + + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + string RecoveryPointId { get; set; } + /// The name of the resource group where the backup vault is present. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + string ResourceGroupName { get; set; } + /// The name of the ResourceOperationGateKeeper + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The name of the ResourceOperationGateKeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + string ResourceOperationGateKeepersName { get; set; } + /// The subscription Id. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + string SubscriptionId { get; set; } + /// The name of the backup vault. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + string VaultName { get; set; } + + } + internal partial interface IDataProtectionIdentityInternal + + { + /// The name of the backup instance + string BackupInstanceName { get; set; } + + string BackupPolicyName { get; set; } + /// Resource identity path + string Id { get; set; } + /// + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// + string JobId { get; set; } + /// The location in which uniqueness will be verified. + string Location { get; set; } + + string OperationId { get; set; } + + string RecoveryPointId { get; set; } + /// The name of the resource group where the backup vault is present. + string ResourceGroupName { get; set; } + /// The name of the ResourceOperationGateKeeper + string ResourceOperationGateKeepersName { get; set; } + /// The subscription Id. + string SubscriptionId { get; set; } + /// The name of the backup vault. + string VaultName { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/DataProtectionIdentity.json.cs b/src/DataProtection/generated/api/Models/DataProtectionIdentity.json.cs new file mode 100644 index 000000000000..cb2b232cd417 --- /dev/null +++ b/src/DataProtection/generated/api/Models/DataProtectionIdentity.json.cs @@ -0,0 +1,125 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class DataProtectionIdentity + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal DataProtectionIdentity(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + {_operationId = If( json?.PropertyT("operationId"), out var __jsonOperationId) ? (string)__jsonOperationId : (string)OperationId;} + {_backupInstanceName = If( json?.PropertyT("backupInstanceName"), out var __jsonBackupInstanceName) ? (string)__jsonBackupInstanceName : (string)BackupInstanceName;} + {_backupPolicyName = If( json?.PropertyT("backupPolicyName"), out var __jsonBackupPolicyName) ? (string)__jsonBackupPolicyName : (string)BackupPolicyName;} + {_id = If( json?.PropertyT("id"), out var __jsonId) ? (string)__jsonId : (string)Id;} + {_jobId = If( json?.PropertyT("jobId"), out var __jsonJobId) ? (string)__jsonJobId : (string)JobId;} + {_location = If( json?.PropertyT("location"), out var __jsonLocation) ? (string)__jsonLocation : (string)Location;} + {_recoveryPointId = If( json?.PropertyT("recoveryPointId"), out var __jsonRecoveryPointId) ? (string)__jsonRecoveryPointId : (string)RecoveryPointId;} + {_resourceGroupName = If( json?.PropertyT("resourceGroupName"), out var __jsonResourceGroupName) ? (string)__jsonResourceGroupName : (string)ResourceGroupName;} + {_resourceOperationGateKeepersName = If( json?.PropertyT("resourceOperationGateKeepersName"), out var __jsonResourceOperationGateKeepersName) ? (string)__jsonResourceOperationGateKeepersName : (string)ResourceOperationGateKeepersName;} + {_subscriptionId = If( json?.PropertyT("subscriptionId"), out var __jsonSubscriptionId) ? (string)__jsonSubscriptionId : (string)SubscriptionId;} + {_vaultName = If( json?.PropertyT("vaultName"), out var __jsonVaultName) ? (string)__jsonVaultName : (string)VaultName;} + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new DataProtectionIdentity(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AddIf( null != (((object)this._operationId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._operationId.ToString()) : null, "operationId" ,container.Add ); + AddIf( null != (((object)this._backupInstanceName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupInstanceName.ToString()) : null, "backupInstanceName" ,container.Add ); + AddIf( null != (((object)this._backupPolicyName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._backupPolicyName.ToString()) : null, "backupPolicyName" ,container.Add ); + AddIf( null != (((object)this._id)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._id.ToString()) : null, "id" ,container.Add ); + AddIf( null != (((object)this._jobId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._jobId.ToString()) : null, "jobId" ,container.Add ); + AddIf( null != (((object)this._location)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._location.ToString()) : null, "location" ,container.Add ); + AddIf( null != (((object)this._recoveryPointId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._recoveryPointId.ToString()) : null, "recoveryPointId" ,container.Add ); + AddIf( null != (((object)this._resourceGroupName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceGroupName.ToString()) : null, "resourceGroupName" ,container.Add ); + AddIf( null != (((object)this._resourceOperationGateKeepersName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._resourceOperationGateKeepersName.ToString()) : null, "resourceOperationGateKeepersName" ,container.Add ); + AddIf( null != (((object)this._subscriptionId)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._subscriptionId.ToString()) : null, "subscriptionId" ,container.Add ); + AddIf( null != (((object)this._vaultName)?.ToString()) ? (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode) new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonString(this._vaultName.ToString()) : null, "vaultName" ,container.Add ); + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.PowerShell.cs b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.PowerShell.cs new file mode 100644 index 000000000000..cc5fbbdcaf26 --- /dev/null +++ b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.PowerShell.cs @@ -0,0 +1,139 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + [System.ComponentModel.TypeConverter(typeof(ExportJobsTriggerAcceptedResponseHeadersTypeConverter))] + public partial class ExportJobsTriggerAcceptedResponseHeaders + { + + /// + /// AfterDeserializeDictionary will be called after the deserialization has finished, allowing customization of the + /// object before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Collections.IDictionary content that should be used. + + partial void AfterDeserializeDictionary(global::System.Collections.IDictionary content); + + /// + /// AfterDeserializePSObject will be called after the deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The global::System.Management.Automation.PSObject content that should be used. + + partial void AfterDeserializePSObject(global::System.Management.Automation.PSObject content); + + /// + /// BeforeDeserializeDictionary will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Collections.IDictionary content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializeDictionary(global::System.Collections.IDictionary content, ref bool returnNow); + + /// + /// BeforeDeserializePSObject will be called before the deserialization has commenced, allowing complete customization + /// of the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeDeserializePSObject(global::System.Management.Automation.PSObject content, ref bool returnNow); + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders DeserializeFromDictionary(global::System.Collections.IDictionary content) + { + return new ExportJobsTriggerAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into an instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + /// + /// an instance of . + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders DeserializeFromPSObject(global::System.Management.Automation.PSObject content) + { + return new ExportJobsTriggerAcceptedResponseHeaders(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Collections.IDictionary content that should be used. + internal ExportJobsTriggerAcceptedResponseHeaders(global::System.Collections.IDictionary content) + { + bool returnNow = false; + BeforeDeserializeDictionary(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializeDictionary(content); + } + + /// + /// Deserializes a into a new instance of . + /// + /// The global::System.Management.Automation.PSObject content that should be used. + internal ExportJobsTriggerAcceptedResponseHeaders(global::System.Management.Automation.PSObject content) + { + bool returnNow = false; + BeforeDeserializePSObject(content, ref returnNow); + if (returnNow) + { + return; + } + // actually deserialize + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).Location = (string) content.GetValueForProperty("Location",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).Location, global::System.Convert.ToString); + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).RetryAfter = (int?) content.GetValueForProperty("RetryAfter",((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).RetryAfter, (__y)=> (int) global::System.Convert.ChangeType(__y, typeof(int))); + AfterDeserializePSObject(content); + } + + /// + /// Creates a new instance of , deserializing the content from a json + /// string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + /// Serializes this instance to a json string. + + /// a containing this model serialized to JSON text. + public string ToJsonString() => ToJson(null, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode.IncludeAll)?.ToString(); + } + [System.ComponentModel.TypeConverter(typeof(ExportJobsTriggerAcceptedResponseHeadersTypeConverter))] + public partial interface IExportJobsTriggerAcceptedResponseHeaders + + { + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.TypeConverter.cs b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.TypeConverter.cs new file mode 100644 index 000000000000..5ed635ce4447 --- /dev/null +++ b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.TypeConverter.cs @@ -0,0 +1,150 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell; + + /// + /// A PowerShell PSTypeConverter to support converting to an instance of + /// + public partial class ExportJobsTriggerAcceptedResponseHeadersTypeConverter : global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise + /// false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return ExportJobsTriggerAcceptedResponseHeaders.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString());; + } + catch + { + // Unable to use JSON pattern + } + if (typeof(global::System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return ExportJobsTriggerAcceptedResponseHeaders.DeserializeFromPSObject(sourceValue); + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return ExportJobsTriggerAcceptedResponseHeaders.DeserializeFromDictionary(sourceValue); + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.cs b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.cs new file mode 100644 index 000000000000..b03145f3082a --- /dev/null +++ b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.cs @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class ExportJobsTriggerAcceptedResponseHeaders : + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable + { + + /// Backing field for property. + private string _location; + + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public string Location { get => this._location; set => this._location = value; } + + /// Backing field for property. + private int? _retryAfter; + + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Origin(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.PropertyOrigin.Owned)] + public int? RetryAfter { get => this._retryAfter; set => this._retryAfter = value; } + + /// + /// Creates an new instance. + /// + public ExportJobsTriggerAcceptedResponseHeaders() + { + + } + + /// + void Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IHeaderSerializable.ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers) + { + if (headers.TryGetValues("Location", out var __locationHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).Location = System.Linq.Enumerable.FirstOrDefault(__locationHeader) is string __headerLocationHeader ? __headerLocationHeader : (string)null; + } + if (headers.TryGetValues("Retry-After", out var __retryAfterHeader)) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeadersInternal)this).RetryAfter = System.Linq.Enumerable.FirstOrDefault(__retryAfterHeader) is string __headerRetryAfterHeader ? int.TryParse( __headerRetryAfterHeader, out int __headerRetryAfterHeaderValue ) ? __headerRetryAfterHeaderValue : default(int?) : default(int?); + } + } + } + public partial interface IExportJobsTriggerAcceptedResponseHeaders + + { + /// The URL of the resource used to check the status of the asynchronous operation. + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The URL of the resource used to check the status of the asynchronous operation.", + SerializedName = @"Location", + PossibleTypes = new [] { typeof(string) })] + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + SerializedName = @"Retry-After", + PossibleTypes = new [] { typeof(int) })] + int? RetryAfter { get; set; } + + } + internal partial interface IExportJobsTriggerAcceptedResponseHeadersInternal + + { + /// The URL of the resource used to check the status of the asynchronous operation. + string Location { get; set; } + /// + /// Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds. + /// + int? RetryAfter { get; set; } + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.json.cs b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.json.cs new file mode 100644 index 000000000000..007ad90b0e19 --- /dev/null +++ b/src/DataProtection/generated/api/Models/ExportJobsTriggerAcceptedResponseHeaders.json.cs @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public partial class ExportJobsTriggerAcceptedResponseHeaders + { + + /// + /// AfterFromJson will be called after the json deserialization has finished, allowing customization of the object + /// before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JsonNode that should be deserialized into this object. + + partial void AfterFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json); + + /// + /// AfterToJson will be called after the json erialization has finished, allowing customization of the before it is returned. Implement this method in a partial class to enable this behavior + /// + /// The JSON container that the serialization result will be placed in. + + partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container); + + /// + /// BeforeFromJson will be called before the json deserialization has commenced, allowing complete customization of + /// the object before it is deserialized. + /// If you wish to disable the default deserialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JsonNode that should be deserialized into this object. + /// Determines if the rest of the deserialization should be processed, or if the method should return + /// instantly. + + partial void BeforeFromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json, ref bool returnNow); + + /// + /// BeforeToJson will be called before the json serialization has commenced, allowing complete customization of the + /// object before it is serialized. + /// If you wish to disable the default serialization entirely, return true in the output parameter. + /// Implement this method in a partial class to enable this behavior. + /// + /// The JSON container that the serialization result will be placed in. + /// Determines if the rest of the serialization should be processed, or if the method should return + /// instantly. + + partial void BeforeToJson(ref Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, ref bool returnNow); + + /// + /// Deserializes a Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject into a new instance of . + /// + /// A Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject instance to deserialize from. + internal ExportJobsTriggerAcceptedResponseHeaders(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + bool returnNow = false; + BeforeFromJson(json, ref returnNow); + if (returnNow) + { + return; + } + AfterFromJson(json); + } + + /// + /// Deserializes a into an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders. + /// + /// a to deserialize from. + /// + /// an instance of Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders. + /// + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IExportJobsTriggerAcceptedResponseHeaders FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new ExportJobsTriggerAcceptedResponseHeaders(json) : null; + } + + /// + /// Serializes this instance of into a . + /// + /// The container to serialize this object into. If the caller + /// passes in null, a new instance will be created and returned to the caller. + /// Allows the caller to choose the depth of the serialization. See . + /// + /// a serialized instance of as a . + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode ToJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject container, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SerializationMode serializationMode) + { + container = container ?? new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject(); + + bool returnNow = false; + BeforeToJson(ref container, ref returnNow); + if (returnNow) + { + return container; + } + AfterToJson(ref container); + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/AbsoluteMarker.Completer.cs b/src/DataProtection/generated/api/Support/AbsoluteMarker.Completer.cs new file mode 100644 index 000000000000..13f816f6b0d0 --- /dev/null +++ b/src/DataProtection/generated/api/Support/AbsoluteMarker.Completer.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for AbsoluteMarker. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarkerTypeConverter))] + public partial struct AbsoluteMarker : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "AllBackup".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("AllBackup", "AllBackup", global::System.Management.Automation.CompletionResultType.ParameterValue, "AllBackup"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "FirstOfDay".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("FirstOfDay", "FirstOfDay", global::System.Management.Automation.CompletionResultType.ParameterValue, "FirstOfDay"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "FirstOfMonth".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("FirstOfMonth", "FirstOfMonth", global::System.Management.Automation.CompletionResultType.ParameterValue, "FirstOfMonth"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "FirstOfWeek".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("FirstOfWeek", "FirstOfWeek", global::System.Management.Automation.CompletionResultType.ParameterValue, "FirstOfWeek"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "FirstOfYear".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("FirstOfYear", "FirstOfYear", global::System.Management.Automation.CompletionResultType.ParameterValue, "FirstOfYear"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/AbsoluteMarker.TypeConverter.cs b/src/DataProtection/generated/api/Support/AbsoluteMarker.TypeConverter.cs new file mode 100644 index 000000000000..29962b24efef --- /dev/null +++ b/src/DataProtection/generated/api/Support/AbsoluteMarker.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for AbsoluteMarker. + public partial class AbsoluteMarkerTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => AbsoluteMarker.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/AbsoluteMarker.cs b/src/DataProtection/generated/api/Support/AbsoluteMarker.cs new file mode 100644 index 000000000000..3b44a170fb45 --- /dev/null +++ b/src/DataProtection/generated/api/Support/AbsoluteMarker.cs @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct AbsoluteMarker : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker AllBackup = @"AllBackup"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker FirstOfDay = @"FirstOfDay"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker FirstOfMonth = @"FirstOfMonth"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker FirstOfWeek = @"FirstOfWeek"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker FirstOfYear = @"FirstOfYear"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Creates an instance of the + /// the value to create an instance for. + private AbsoluteMarker(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Conversion from arbitrary object to AbsoluteMarker + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new AbsoluteMarker(System.Convert.ToString(value)); + } + + /// Compares values of enum type AbsoluteMarker + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type AbsoluteMarker (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is AbsoluteMarker && Equals((AbsoluteMarker)obj); + } + + /// Returns hashCode for enum AbsoluteMarker + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Returns string representation for AbsoluteMarker + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to AbsoluteMarker + /// the value to convert to an instance of . + + public static implicit operator AbsoluteMarker(string value) + { + return new AbsoluteMarker(value); + } + + /// Implicit operator to convert AbsoluteMarker to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e) + { + return e._value; + } + + /// Overriding != operator for enum AbsoluteMarker + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum AbsoluteMarker + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.AbsoluteMarker e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DataStoreTypes.Completer.cs b/src/DataProtection/generated/api/Support/DataStoreTypes.Completer.cs new file mode 100644 index 000000000000..279bd67098c2 --- /dev/null +++ b/src/DataProtection/generated/api/Support/DataStoreTypes.Completer.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for DataStoreTypes. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypesTypeConverter))] + public partial struct DataStoreTypes : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ArchiveStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ArchiveStore", "ArchiveStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "ArchiveStore"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "SnapshotStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("SnapshotStore", "SnapshotStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "SnapshotStore"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "VaultStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("VaultStore", "VaultStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "VaultStore"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DataStoreTypes.TypeConverter.cs b/src/DataProtection/generated/api/Support/DataStoreTypes.TypeConverter.cs new file mode 100644 index 000000000000..617a5b0a5a19 --- /dev/null +++ b/src/DataProtection/generated/api/Support/DataStoreTypes.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for DataStoreTypes. + public partial class DataStoreTypesTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => DataStoreTypes.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DataStoreTypes.cs b/src/DataProtection/generated/api/Support/DataStoreTypes.cs new file mode 100644 index 000000000000..6627ec172cbe --- /dev/null +++ b/src/DataProtection/generated/api/Support/DataStoreTypes.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct DataStoreTypes : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes ArchiveStore = @"ArchiveStore"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes SnapshotStore = @"SnapshotStore"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes VaultStore = @"VaultStore"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to DataStoreTypes + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new DataStoreTypes(System.Convert.ToString(value)); + } + + /// Creates an instance of the + /// the value to create an instance for. + private DataStoreTypes(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Compares values of enum type DataStoreTypes + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type DataStoreTypes (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is DataStoreTypes && Equals((DataStoreTypes)obj); + } + + /// Returns hashCode for enum DataStoreTypes + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Returns string representation for DataStoreTypes + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to DataStoreTypes + /// the value to convert to an instance of . + + public static implicit operator DataStoreTypes(string value) + { + return new DataStoreTypes(value); + } + + /// Implicit operator to convert DataStoreTypes to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e) + { + return e._value; + } + + /// Overriding != operator for enum DataStoreTypes + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum DataStoreTypes + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DataStoreTypes e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DayOfWeek.Completer.cs b/src/DataProtection/generated/api/Support/DayOfWeek.Completer.cs new file mode 100644 index 000000000000..d121fcff4ddd --- /dev/null +++ b/src/DataProtection/generated/api/Support/DayOfWeek.Completer.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for DayOfWeek. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeekTypeConverter))] + public partial struct DayOfWeek : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Friday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Friday", "Friday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Friday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Monday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Monday", "Monday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Monday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Saturday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Saturday", "Saturday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Saturday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Sunday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Sunday", "Sunday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Sunday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Thursday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Thursday", "Thursday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Thursday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Tuesday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Tuesday", "Tuesday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Tuesday"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Wednesday".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Wednesday", "Wednesday", global::System.Management.Automation.CompletionResultType.ParameterValue, "Wednesday"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DayOfWeek.TypeConverter.cs b/src/DataProtection/generated/api/Support/DayOfWeek.TypeConverter.cs new file mode 100644 index 000000000000..b7246a3e9bf4 --- /dev/null +++ b/src/DataProtection/generated/api/Support/DayOfWeek.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for DayOfWeek. + public partial class DayOfWeekTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => DayOfWeek.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/DayOfWeek.cs b/src/DataProtection/generated/api/Support/DayOfWeek.cs new file mode 100644 index 000000000000..8144ebe59bf7 --- /dev/null +++ b/src/DataProtection/generated/api/Support/DayOfWeek.cs @@ -0,0 +1,107 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct DayOfWeek : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Friday = @"Friday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Monday = @"Monday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Saturday = @"Saturday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Sunday = @"Sunday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Thursday = @"Thursday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Tuesday = @"Tuesday"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek Wednesday = @"Wednesday"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to DayOfWeek + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new DayOfWeek(System.Convert.ToString(value)); + } + + /// Creates an instance of the + /// the value to create an instance for. + private DayOfWeek(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Compares values of enum type DayOfWeek + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type DayOfWeek (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is DayOfWeek && Equals((DayOfWeek)obj); + } + + /// Returns hashCode for enum DayOfWeek + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Returns string representation for DayOfWeek + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to DayOfWeek + /// the value to convert to an instance of . + + public static implicit operator DayOfWeek(string value) + { + return new DayOfWeek(value); + } + + /// Implicit operator to convert DayOfWeek to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e) + { + return e._value; + } + + /// Overriding != operator for enum DayOfWeek + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum DayOfWeek + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.DayOfWeek e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Month.Completer.cs b/src/DataProtection/generated/api/Support/Month.Completer.cs new file mode 100644 index 000000000000..e9058fe06906 --- /dev/null +++ b/src/DataProtection/generated/api/Support/Month.Completer.cs @@ -0,0 +1,79 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for Month. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.MonthTypeConverter))] + public partial struct Month : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "April".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("April", "April", global::System.Management.Automation.CompletionResultType.ParameterValue, "April"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "August".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("August", "August", global::System.Management.Automation.CompletionResultType.ParameterValue, "August"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "December".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("December", "December", global::System.Management.Automation.CompletionResultType.ParameterValue, "December"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "February".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("February", "February", global::System.Management.Automation.CompletionResultType.ParameterValue, "February"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "January".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("January", "January", global::System.Management.Automation.CompletionResultType.ParameterValue, "January"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "July".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("July", "July", global::System.Management.Automation.CompletionResultType.ParameterValue, "July"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "June".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("June", "June", global::System.Management.Automation.CompletionResultType.ParameterValue, "June"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "March".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("March", "March", global::System.Management.Automation.CompletionResultType.ParameterValue, "March"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "May".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("May", "May", global::System.Management.Automation.CompletionResultType.ParameterValue, "May"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "November".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("November", "November", global::System.Management.Automation.CompletionResultType.ParameterValue, "November"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "October".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("October", "October", global::System.Management.Automation.CompletionResultType.ParameterValue, "October"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "September".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("September", "September", global::System.Management.Automation.CompletionResultType.ParameterValue, "September"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Month.TypeConverter.cs b/src/DataProtection/generated/api/Support/Month.TypeConverter.cs new file mode 100644 index 000000000000..1c4fca9f7b1b --- /dev/null +++ b/src/DataProtection/generated/api/Support/Month.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for Month. + public partial class MonthTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => Month.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Month.cs b/src/DataProtection/generated/api/Support/Month.cs new file mode 100644 index 000000000000..9cefc14100bb --- /dev/null +++ b/src/DataProtection/generated/api/Support/Month.cs @@ -0,0 +1,117 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct Month : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month April = @"April"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month August = @"August"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month December = @"December"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month February = @"February"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month January = @"January"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month July = @"July"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month June = @"June"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month March = @"March"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month May = @"May"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month November = @"November"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month October = @"October"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month September = @"September"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to Month + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new Month(System.Convert.ToString(value)); + } + + /// Compares values of enum type Month + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type Month (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is Month && Equals((Month)obj); + } + + /// Returns hashCode for enum Month + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private Month(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for Month + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to Month + /// the value to convert to an instance of . + + public static implicit operator Month(string value) + { + return new Month(value); + } + + /// Implicit operator to convert Month to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e) + { + return e._value; + } + + /// Overriding != operator for enum Month + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum Month + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Month e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/ProvisioningState.Completer.cs b/src/DataProtection/generated/api/Support/ProvisioningState.Completer.cs new file mode 100644 index 000000000000..b94e899b5914 --- /dev/null +++ b/src/DataProtection/generated/api/Support/ProvisioningState.Completer.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for ProvisioningState. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningStateTypeConverter))] + public partial struct ProvisioningState : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Failed".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Failed", "Failed", global::System.Management.Automation.CompletionResultType.ParameterValue, "Failed"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Provisioning".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Provisioning", "Provisioning", global::System.Management.Automation.CompletionResultType.ParameterValue, "Provisioning"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Succeeded".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Succeeded", "Succeeded", global::System.Management.Automation.CompletionResultType.ParameterValue, "Succeeded"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Unknown".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Unknown", "Unknown", global::System.Management.Automation.CompletionResultType.ParameterValue, "Unknown"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Updating".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Updating", "Updating", global::System.Management.Automation.CompletionResultType.ParameterValue, "Updating"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/ProvisioningState.TypeConverter.cs b/src/DataProtection/generated/api/Support/ProvisioningState.TypeConverter.cs new file mode 100644 index 000000000000..44532fb5e5d6 --- /dev/null +++ b/src/DataProtection/generated/api/Support/ProvisioningState.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for ProvisioningState. + public partial class ProvisioningStateTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ProvisioningState.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/ProvisioningState.cs b/src/DataProtection/generated/api/Support/ProvisioningState.cs new file mode 100644 index 000000000000..3ae34446bf5e --- /dev/null +++ b/src/DataProtection/generated/api/Support/ProvisioningState.cs @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct ProvisioningState : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState Failed = @"Failed"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState Provisioning = @"Provisioning"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState Succeeded = @"Succeeded"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState Unknown = @"Unknown"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState Updating = @"Updating"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to ProvisioningState + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new ProvisioningState(System.Convert.ToString(value)); + } + + /// Compares values of enum type ProvisioningState + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type ProvisioningState (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is ProvisioningState && Equals((ProvisioningState)obj); + } + + /// Returns hashCode for enum ProvisioningState + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private ProvisioningState(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for ProvisioningState + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to ProvisioningState + /// the value to convert to an instance of . + + public static implicit operator ProvisioningState(string value) + { + return new ProvisioningState(value); + } + + /// Implicit operator to convert ProvisioningState to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e) + { + return e._value; + } + + /// Overriding != operator for enum ProvisioningState + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum ProvisioningState + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.ProvisioningState e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationPriority.Completer.cs b/src/DataProtection/generated/api/Support/RehydrationPriority.Completer.cs new file mode 100644 index 000000000000..273648562738 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationPriority.Completer.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for RehydrationPriority. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriorityTypeConverter))] + public partial struct RehydrationPriority : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Invalid".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Invalid", "Invalid", global::System.Management.Automation.CompletionResultType.ParameterValue, "Invalid"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "High".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("High", "High", global::System.Management.Automation.CompletionResultType.ParameterValue, "High"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Standard".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Standard", "Standard", global::System.Management.Automation.CompletionResultType.ParameterValue, "Standard"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationPriority.TypeConverter.cs b/src/DataProtection/generated/api/Support/RehydrationPriority.TypeConverter.cs new file mode 100644 index 000000000000..035c336a8a97 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationPriority.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for RehydrationPriority. + public partial class RehydrationPriorityTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => RehydrationPriority.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationPriority.cs b/src/DataProtection/generated/api/Support/RehydrationPriority.cs new file mode 100644 index 000000000000..38b526663915 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationPriority.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct RehydrationPriority : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority High = @"High"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority Invalid = @"Invalid"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority Standard = @"Standard"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to RehydrationPriority + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new RehydrationPriority(System.Convert.ToString(value)); + } + + /// Compares values of enum type RehydrationPriority + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type RehydrationPriority (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is RehydrationPriority && Equals((RehydrationPriority)obj); + } + + /// Returns hashCode for enum RehydrationPriority + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private RehydrationPriority(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for RehydrationPriority + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to RehydrationPriority + /// the value to convert to an instance of . + + public static implicit operator RehydrationPriority(string value) + { + return new RehydrationPriority(value); + } + + /// Implicit operator to convert RehydrationPriority to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e) + { + return e._value; + } + + /// Overriding != operator for enum RehydrationPriority + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum RehydrationPriority + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationStatus.Completer.cs b/src/DataProtection/generated/api/Support/RehydrationStatus.Completer.cs new file mode 100644 index 000000000000..d72581ef927b --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationStatus.Completer.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for RehydrationStatus. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatusTypeConverter))] + public partial struct RehydrationStatus : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "CREATE_IN_PROGRESS".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("CREATE_IN_PROGRESS", "CREATE_IN_PROGRESS", global::System.Management.Automation.CompletionResultType.ParameterValue, "CREATE_IN_PROGRESS"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "COMPLETED".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("COMPLETED", "COMPLETED", global::System.Management.Automation.CompletionResultType.ParameterValue, "COMPLETED"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "DELETE_IN_PROGRESS".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("DELETE_IN_PROGRESS", "DELETE_IN_PROGRESS", global::System.Management.Automation.CompletionResultType.ParameterValue, "DELETE_IN_PROGRESS"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "DELETED".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("DELETED", "DELETED", global::System.Management.Automation.CompletionResultType.ParameterValue, "DELETED"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "FAILED".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("FAILED", "FAILED", global::System.Management.Automation.CompletionResultType.ParameterValue, "FAILED"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationStatus.TypeConverter.cs b/src/DataProtection/generated/api/Support/RehydrationStatus.TypeConverter.cs new file mode 100644 index 000000000000..700559b129a4 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationStatus.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for RehydrationStatus. + public partial class RehydrationStatusTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => RehydrationStatus.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RehydrationStatus.cs b/src/DataProtection/generated/api/Support/RehydrationStatus.cs new file mode 100644 index 000000000000..db8e69441ff2 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RehydrationStatus.cs @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct RehydrationStatus : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus Completed = @"COMPLETED"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus CreateInProgress = @"CREATE_IN_PROGRESS"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus DeleteInProgress = @"DELETE_IN_PROGRESS"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus Deleted = @"DELETED"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus Failed = @"FAILED"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to RehydrationStatus + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new RehydrationStatus(System.Convert.ToString(value)); + } + + /// Compares values of enum type RehydrationStatus + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type RehydrationStatus (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is RehydrationStatus && Equals((RehydrationStatus)obj); + } + + /// Returns hashCode for enum RehydrationStatus + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private RehydrationStatus(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for RehydrationStatus + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to RehydrationStatus + /// the value to convert to an instance of . + + public static implicit operator RehydrationStatus(string value) + { + return new RehydrationStatus(value); + } + + /// Implicit operator to convert RehydrationStatus to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e) + { + return e._value; + } + + /// Overriding != operator for enum RehydrationStatus + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum RehydrationStatus + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationStatus e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RestoreTargetLocationType.Completer.cs b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.Completer.cs new file mode 100644 index 000000000000..3b806a64dde9 --- /dev/null +++ b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.Completer.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for RestoreTargetLocationType. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationTypeTypeConverter))] + public partial struct RestoreTargetLocationType : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Invalid".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Invalid", "Invalid", global::System.Management.Automation.CompletionResultType.ParameterValue, "Invalid"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "AzureBlobs".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("AzureBlobs", "AzureBlobs", global::System.Management.Automation.CompletionResultType.ParameterValue, "AzureBlobs"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "AzureFiles".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("AzureFiles", "AzureFiles", global::System.Management.Automation.CompletionResultType.ParameterValue, "AzureFiles"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RestoreTargetLocationType.TypeConverter.cs b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.TypeConverter.cs new file mode 100644 index 000000000000..1df08119774c --- /dev/null +++ b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for RestoreTargetLocationType. + public partial class RestoreTargetLocationTypeTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => RestoreTargetLocationType.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/RestoreTargetLocationType.cs b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.cs new file mode 100644 index 000000000000..3ce9402553df --- /dev/null +++ b/src/DataProtection/generated/api/Support/RestoreTargetLocationType.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct RestoreTargetLocationType : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType AzureBlobs = @"AzureBlobs"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType AzureFiles = @"AzureFiles"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType Invalid = @"Invalid"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to RestoreTargetLocationType + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new RestoreTargetLocationType(System.Convert.ToString(value)); + } + + /// Compares values of enum type RestoreTargetLocationType + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type RestoreTargetLocationType (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is RestoreTargetLocationType && Equals((RestoreTargetLocationType)obj); + } + + /// Returns hashCode for enum RestoreTargetLocationType + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private RestoreTargetLocationType(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for RestoreTargetLocationType + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to RestoreTargetLocationType + /// the value to convert to an instance of . + + public static implicit operator RestoreTargetLocationType(string value) + { + return new RestoreTargetLocationType(value); + } + + /// Implicit operator to convert RestoreTargetLocationType to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e) + { + return e._value; + } + + /// Overriding != operator for enum RestoreTargetLocationType + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum RestoreTargetLocationType + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RestoreTargetLocationType e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/SourceDataStoreType.Completer.cs b/src/DataProtection/generated/api/Support/SourceDataStoreType.Completer.cs new file mode 100644 index 000000000000..f0e2b1af96f2 --- /dev/null +++ b/src/DataProtection/generated/api/Support/SourceDataStoreType.Completer.cs @@ -0,0 +1,43 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for SourceDataStoreType. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreTypeTypeConverter))] + public partial struct SourceDataStoreType : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ArchiveStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ArchiveStore", "ArchiveStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "ArchiveStore"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "SnapshotStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("SnapshotStore", "SnapshotStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "SnapshotStore"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "VaultStore".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("VaultStore", "VaultStore", global::System.Management.Automation.CompletionResultType.ParameterValue, "VaultStore"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/SourceDataStoreType.TypeConverter.cs b/src/DataProtection/generated/api/Support/SourceDataStoreType.TypeConverter.cs new file mode 100644 index 000000000000..f8096527a321 --- /dev/null +++ b/src/DataProtection/generated/api/Support/SourceDataStoreType.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for SourceDataStoreType. + public partial class SourceDataStoreTypeTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => SourceDataStoreType.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/SourceDataStoreType.cs b/src/DataProtection/generated/api/Support/SourceDataStoreType.cs new file mode 100644 index 000000000000..1ff63f09ebb5 --- /dev/null +++ b/src/DataProtection/generated/api/Support/SourceDataStoreType.cs @@ -0,0 +1,99 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct SourceDataStoreType : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType ArchiveStore = @"ArchiveStore"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SnapshotStore = @"SnapshotStore"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType VaultStore = @"VaultStore"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to SourceDataStoreType + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new SourceDataStoreType(System.Convert.ToString(value)); + } + + /// Compares values of enum type SourceDataStoreType + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type SourceDataStoreType (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is SourceDataStoreType && Equals((SourceDataStoreType)obj); + } + + /// Returns hashCode for enum SourceDataStoreType + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private SourceDataStoreType(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for SourceDataStoreType + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to SourceDataStoreType + /// the value to convert to an instance of . + + public static implicit operator SourceDataStoreType(string value) + { + return new SourceDataStoreType(value); + } + + /// Implicit operator to convert SourceDataStoreType to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e) + { + return e._value; + } + + /// Overriding != operator for enum SourceDataStoreType + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum SourceDataStoreType + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Status.Completer.cs b/src/DataProtection/generated/api/Support/Status.Completer.cs new file mode 100644 index 000000000000..80a1842cb5b1 --- /dev/null +++ b/src/DataProtection/generated/api/Support/Status.Completer.cs @@ -0,0 +1,55 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for Status. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StatusTypeConverter))] + public partial struct Status : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ConfiguringProtection".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ConfiguringProtection", "ConfiguringProtection", global::System.Management.Automation.CompletionResultType.ParameterValue, "ConfiguringProtection"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ConfiguringProtectionFailed".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ConfiguringProtectionFailed", "ConfiguringProtectionFailed", global::System.Management.Automation.CompletionResultType.ParameterValue, "ConfiguringProtectionFailed"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ProtectionConfigured".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ProtectionConfigured", "ProtectionConfigured", global::System.Management.Automation.CompletionResultType.ParameterValue, "ProtectionConfigured"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "ProtectionStopped".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("ProtectionStopped", "ProtectionStopped", global::System.Management.Automation.CompletionResultType.ParameterValue, "ProtectionStopped"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "SoftDeleted".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("SoftDeleted", "SoftDeleted", global::System.Management.Automation.CompletionResultType.ParameterValue, "SoftDeleted"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "SoftDeleting".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("SoftDeleting", "SoftDeleting", global::System.Management.Automation.CompletionResultType.ParameterValue, "SoftDeleting"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Status.TypeConverter.cs b/src/DataProtection/generated/api/Support/Status.TypeConverter.cs new file mode 100644 index 000000000000..b5872f3a7b73 --- /dev/null +++ b/src/DataProtection/generated/api/Support/Status.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for Status. + public partial class StatusTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => Status.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/Status.cs b/src/DataProtection/generated/api/Support/Status.cs new file mode 100644 index 000000000000..18827d221285 --- /dev/null +++ b/src/DataProtection/generated/api/Support/Status.cs @@ -0,0 +1,105 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct Status : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status ConfiguringProtection = @"ConfiguringProtection"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status ConfiguringProtectionFailed = @"ConfiguringProtectionFailed"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status ProtectionConfigured = @"ProtectionConfigured"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status ProtectionStopped = @"ProtectionStopped"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status SoftDeleted = @"SoftDeleted"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status SoftDeleting = @"SoftDeleting"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to Status + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new Status(System.Convert.ToString(value)); + } + + /// Compares values of enum type Status + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type Status (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is Status && Equals((Status)obj); + } + + /// Returns hashCode for enum Status + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private Status(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for Status + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to Status + /// the value to convert to an instance of . + + public static implicit operator Status(string value) + { + return new Status(value); + } + + /// Implicit operator to convert Status to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e) + { + return e._value; + } + + /// Overriding != operator for enum Status + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum Status + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.Status e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/StorageSettingTypes.Completer.cs b/src/DataProtection/generated/api/Support/StorageSettingTypes.Completer.cs new file mode 100644 index 000000000000..ba6fc82acb40 --- /dev/null +++ b/src/DataProtection/generated/api/Support/StorageSettingTypes.Completer.cs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for StorageSettingTypes. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypesTypeConverter))] + public partial struct StorageSettingTypes : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "GeoRedundant".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("GeoRedundant", "GeoRedundant", global::System.Management.Automation.CompletionResultType.ParameterValue, "GeoRedundant"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "LocallyRedundant".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("LocallyRedundant", "LocallyRedundant", global::System.Management.Automation.CompletionResultType.ParameterValue, "LocallyRedundant"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/StorageSettingTypes.TypeConverter.cs b/src/DataProtection/generated/api/Support/StorageSettingTypes.TypeConverter.cs new file mode 100644 index 000000000000..72b42faae638 --- /dev/null +++ b/src/DataProtection/generated/api/Support/StorageSettingTypes.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for StorageSettingTypes. + public partial class StorageSettingTypesTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => StorageSettingTypes.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/StorageSettingTypes.cs b/src/DataProtection/generated/api/Support/StorageSettingTypes.cs new file mode 100644 index 000000000000..221dc8ba3502 --- /dev/null +++ b/src/DataProtection/generated/api/Support/StorageSettingTypes.cs @@ -0,0 +1,97 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct StorageSettingTypes : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes GeoRedundant = @"GeoRedundant"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes LocallyRedundant = @"LocallyRedundant"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to StorageSettingTypes + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new StorageSettingTypes(System.Convert.ToString(value)); + } + + /// Compares values of enum type StorageSettingTypes + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type StorageSettingTypes (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is StorageSettingTypes && Equals((StorageSettingTypes)obj); + } + + /// Returns hashCode for enum StorageSettingTypes + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Creates an instance of the + /// the value to create an instance for. + private StorageSettingTypes(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Returns string representation for StorageSettingTypes + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Implicit operator to convert string to StorageSettingTypes + /// the value to convert to an instance of . + + public static implicit operator StorageSettingTypes(string value) + { + return new StorageSettingTypes(value); + } + + /// Implicit operator to convert StorageSettingTypes to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e) + { + return e._value; + } + + /// Overriding != operator for enum StorageSettingTypes + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum StorageSettingTypes + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.StorageSettingTypes e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/WeekNumber.Completer.cs b/src/DataProtection/generated/api/Support/WeekNumber.Completer.cs new file mode 100644 index 000000000000..90b047b26609 --- /dev/null +++ b/src/DataProtection/generated/api/Support/WeekNumber.Completer.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// Argument completer implementation for WeekNumber. + [System.ComponentModel.TypeConverter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumberTypeConverter))] + public partial struct WeekNumber : + System.Management.Automation.IArgumentCompleter + { + + /// + /// Implementations of this function are called by PowerShell to complete arguments. + /// + /// The name of the command that needs argument completion. + /// The name of the parameter that needs argument completion. + /// The (possibly empty) word being completed. + /// The command ast in case it is needed for completion. + /// This parameter is similar to $PSBoundParameters, except that sometimes PowerShell cannot + /// or will not attempt to evaluate an argument, in which case you may need to use commandAst. + /// + /// A collection of completion results, most like with ResultType set to ParameterValue. + /// + public global::System.Collections.Generic.IEnumerable CompleteArgument(global::System.String commandName, global::System.String parameterName, global::System.String wordToComplete, global::System.Management.Automation.Language.CommandAst commandAst, global::System.Collections.IDictionary fakeBoundParameters) + { + if (global::System.String.IsNullOrEmpty(wordToComplete) || "First".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("First", "First", global::System.Management.Automation.CompletionResultType.ParameterValue, "First"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Fourth".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Fourth", "Fourth", global::System.Management.Automation.CompletionResultType.ParameterValue, "Fourth"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Last".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Last", "Last", global::System.Management.Automation.CompletionResultType.ParameterValue, "Last"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Second".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Second", "Second", global::System.Management.Automation.CompletionResultType.ParameterValue, "Second"); + } + if (global::System.String.IsNullOrEmpty(wordToComplete) || "Third".StartsWith(wordToComplete, global::System.StringComparison.InvariantCultureIgnoreCase)) + { + yield return new global::System.Management.Automation.CompletionResult("Third", "Third", global::System.Management.Automation.CompletionResultType.ParameterValue, "Third"); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/WeekNumber.TypeConverter.cs b/src/DataProtection/generated/api/Support/WeekNumber.TypeConverter.cs new file mode 100644 index 000000000000..14e09237d7d8 --- /dev/null +++ b/src/DataProtection/generated/api/Support/WeekNumber.TypeConverter.cs @@ -0,0 +1,59 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + /// TypeConverter implementation for WeekNumber. + public partial class WeekNumberTypeConverter : + global::System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => true; + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => WeekNumber.CreateFrom(sourceValue); + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/api/Support/WeekNumber.cs b/src/DataProtection/generated/api/Support/WeekNumber.cs new file mode 100644 index 000000000000..91658167b89b --- /dev/null +++ b/src/DataProtection/generated/api/Support/WeekNumber.cs @@ -0,0 +1,103 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support +{ + + public partial struct WeekNumber : + System.IEquatable + { + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber First = @"First"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber Fourth = @"Fourth"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber Last = @"Last"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber Second = @"Second"; + + public static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber Third = @"Third"; + + /// the value for an instance of the Enum. + private string _value { get; set; } + + /// Conversion from arbitrary object to WeekNumber + /// the value to convert to an instance of . + internal static object CreateFrom(object value) + { + return new WeekNumber(System.Convert.ToString(value)); + } + + /// Compares values of enum type WeekNumber + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public bool Equals(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e) + { + return _value.Equals(e._value); + } + + /// Compares values of enum type WeekNumber (override for Object) + /// the value to compare against this instance. + /// true if the two instances are equal to the same value + public override bool Equals(object obj) + { + return obj is WeekNumber && Equals((WeekNumber)obj); + } + + /// Returns hashCode for enum WeekNumber + /// The hashCode of the value + public override int GetHashCode() + { + return this._value.GetHashCode(); + } + + /// Returns string representation for WeekNumber + /// A string for this value. + public override string ToString() + { + return this._value; + } + + /// Creates an instance of the + /// the value to create an instance for. + private WeekNumber(string underlyingValue) + { + this._value = underlyingValue; + } + + /// Implicit operator to convert string to WeekNumber + /// the value to convert to an instance of . + + public static implicit operator WeekNumber(string value) + { + return new WeekNumber(value); + } + + /// Implicit operator to convert WeekNumber to string + /// the value to convert to an instance of . + + public static implicit operator string(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e) + { + return e._value; + } + + /// Overriding != operator for enum WeekNumber + /// the value to compare against + /// the value to compare against + /// true if the two instances are not equal to the same value + public static bool operator !=(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e2) + { + return !e2.Equals(e1); + } + + /// Overriding == operator for enum WeekNumber + /// the value to compare against + /// the value to compare against + /// true if the two instances are equal to the same value + public static bool operator ==(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e1, Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.WeekNumber e2) + { + return e2.Equals(e1); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_Backup.cs b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_Backup.cs new file mode 100644 index 000000000000..0f328b7098ef --- /dev/null +++ b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_Backup.cs @@ -0,0 +1,498 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger adhoc backup + /// + /// [OpenAPI] BackupInstances_AdhocBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Backup, @"AzDataProtectionBackupInstanceAdhoc_Backup", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Trigger adhoc backup ")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class BackupAzDataProtectionBackupInstanceAdhoc_Backup : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest _parameter; + + /// Trigger backup request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Trigger backup request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Trigger backup request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// Intializes a new instance of the cmdlet class. + /// + public BackupAzDataProtectionBackupInstanceAdhoc_Backup() + { + + } + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of BackupAzDataProtectionBackupInstanceAdhoc_Backup + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.BackupAzDataProtectionBackupInstanceAdhoc_Backup Clone() + { + var clone = new BackupAzDataProtectionBackupInstanceAdhoc_Backup(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesAdhocBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesAdhocBackup(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, Parameter, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded.cs b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded.cs new file mode 100644 index 000000000000..458f1e688c91 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded.cs @@ -0,0 +1,515 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger adhoc backup + /// + /// [OpenAPI] BackupInstances_AdhocBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Backup, @"AzDataProtectionBackupInstanceAdhoc_BackupExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Trigger adhoc backup ")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"ruleName", + PossibleTypes = new [] { typeof(string) })] + public string BackupRuleOptionRuleName { get => ParametersBody.BackupRuleOptionRuleName ?? null; set => ParametersBody.BackupRuleOptionRuleName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerBackupRequest(); + + /// Trigger backup request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @".", + SerializedName = @"retentionTagOverride", + PossibleTypes = new [] { typeof(string) })] + public string TriggerOptionRetentionTagOverride { get => ParametersBody.TriggerOptionRetentionTagOverride ?? null; set => ParametersBody.TriggerOptionRetentionTagOverride = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// Intializes a new instance of the cmdlet class. + /// + public BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded() + { + + } + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded Clone() + { + var clone = new BackupAzDataProtectionBackupInstanceAdhoc_BackupExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesAdhocBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesAdhocBackup(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, ParametersBody, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity.cs b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity.cs new file mode 100644 index 000000000000..047f6fd7f96e --- /dev/null +++ b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity.cs @@ -0,0 +1,468 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger adhoc backup + /// + /// [OpenAPI] BackupInstances_AdhocBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Backup, @"AzDataProtectionBackupInstanceAdhoc_BackupViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Trigger adhoc backup ")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest _parameter; + + /// Trigger backup request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Trigger backup request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Trigger backup request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// Intializes a new instance of the cmdlet class. + /// + public BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity() + { + + } + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity Clone() + { + var clone = new BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesAdhocBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesAdhocBackupViaIdentity(InputObject.Id, Parameter, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesAdhocBackup(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, Parameter, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded.cs new file mode 100644 index 000000000000..69ceca2df0e3 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded.cs @@ -0,0 +1,484 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Trigger adhoc backup + /// + /// [OpenAPI] BackupInstances_AdhocBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/backup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Backup, @"AzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Trigger adhoc backup ")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"ruleName", + PossibleTypes = new [] { typeof(string) })] + public string BackupRuleOptionRuleName { get => ParametersBody.BackupRuleOptionRuleName ?? null; set => ParametersBody.BackupRuleOptionRuleName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.TriggerBackupRequest(); + + /// Trigger backup request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ITriggerBackupRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @".", + SerializedName = @"retentionTagOverride", + PossibleTypes = new [] { typeof(string) })] + public string TriggerOptionRetentionTagOverride { get => ParametersBody.TriggerOptionRetentionTagOverride ?? null; set => ParametersBody.TriggerOptionRetentionTagOverride = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded() + { + + } + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded Clone() + { + var clone = new BackupAzDataProtectionBackupInstanceAdhoc_BackupViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesAdhocBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesAdhocBackupViaIdentity(InputObject.Id, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesAdhocBackup(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get.cs new file mode 100644 index 000000000000..7b43095ac95c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get.cs @@ -0,0 +1,399 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup instances belonging to a backup vault + /// + /// [OpenAPI] BackupInstances_GetBackupInstancesInVault=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupInstance_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup instances belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupInstance_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupInstance_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesGetBackupInstancesInVault(VaultName, ResourceGroupName, SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get1.cs new file mode 100644 index 000000000000..0b4d5f37b605 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_Get1.cs @@ -0,0 +1,413 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup instance with name in a backup vault + /// + /// [OpenAPI] BackupInstances_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupInstance_Get1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup instance with name in a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupInstance_Get1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupInstanceName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupInstance_Get1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesGet(VaultName, ResourceGroupName, SubscriptionId, Name, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity.cs new file mode 100644 index 000000000000..a8849d688973 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity.cs @@ -0,0 +1,378 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup instances belonging to a backup vault + /// + /// [OpenAPI] BackupInstances_GetBackupInstancesInVault=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupInstance_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup instances belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupInstance_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupInstance_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesGetBackupInstancesInVaultViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesGetBackupInstancesInVault(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity1.cs new file mode 100644 index 000000000000..ffeb2158948c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupInstance_GetViaIdentity1.cs @@ -0,0 +1,381 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup instance with name in a backup vault + /// + /// [OpenAPI] BackupInstances_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupInstance_GetViaIdentity1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup instance with name in a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupInstance_GetViaIdentity1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupInstance_GetViaIdentity1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesGet(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_Get.cs new file mode 100644 index 000000000000..74ad4b915b80 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_Get.cs @@ -0,0 +1,412 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupPolicy_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupPolicy_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupPolicyName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupPolicyName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupPolicy_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupPoliciesGet(VaultName, ResourceGroupName, SubscriptionId, Name, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_GetViaIdentity.cs new file mode 100644 index 000000000000..7b143907f1f4 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_GetViaIdentity.cs @@ -0,0 +1,381 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupPolicy_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupPolicy_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupPolicy_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupPoliciesGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupPolicyName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupPolicyName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupPoliciesGet(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupPolicyName ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_List.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_List.cs new file mode 100644 index 000000000000..12e9ac654c86 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupPolicy_List.cs @@ -0,0 +1,399 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns list of backup policies belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_List=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupPolicy_List")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns list of backup policies belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupPolicy_List : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupPolicy_List() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupPoliciesList(VaultName, ResourceGroupName, SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get.cs new file mode 100644 index 000000000000..ecc5040846a2 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get.cs @@ -0,0 +1,371 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns resource collection belonging to a subscription. + /// + /// [OpenAPI] BackupVaults_GetResourcesInSubscription=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/backupVaults" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVaultResource_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns resource collection belonging to a subscription.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVaultResource_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVaultResource_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsGetResourcesInSubscription(SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get1.cs new file mode 100644 index 000000000000..0092bffa26b4 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_Get1.cs @@ -0,0 +1,385 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns resource collection belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_GetResourcesInResourceGroup=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVaultResource_Get1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns resource collection belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVaultResource_Get1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVaultResource_Get1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsGetResourcesInResourceGroup(ResourceGroupName, SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity.cs new file mode 100644 index 000000000000..60cdd3f4b15c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity.cs @@ -0,0 +1,370 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns resource collection belonging to a subscription. + /// + /// [OpenAPI] BackupVaults_GetResourcesInSubscription=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/backupVaults" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVaultResource_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns resource collection belonging to a subscription.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVaultResource_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVaultResource_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsGetResourcesInSubscriptionViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsGetResourcesInSubscription(InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity1.cs new file mode 100644 index 000000000000..04921ef12d13 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVaultResource_GetViaIdentity1.cs @@ -0,0 +1,374 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns resource collection belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_GetResourcesInResourceGroup=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVaultResource_GetViaIdentity1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns resource collection belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVaultResource_GetViaIdentity1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVaultResource_GetViaIdentity1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsGetResourcesInResourceGroupViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsGetResourcesInResourceGroup(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_Get.cs new file mode 100644 index 000000000000..6384d3d26df0 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_Get.cs @@ -0,0 +1,398 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a resource belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVault_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVault_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVault_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsGet(VaultName, ResourceGroupName, SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_GetViaIdentity.cs new file mode 100644 index 000000000000..0e4758e35715 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionBackupVault_GetViaIdentity.cs @@ -0,0 +1,377 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a resource belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionBackupVault_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionBackupVault_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionBackupVault_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsGet(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_Get.cs new file mode 100644 index 000000000000..cf9a115416c6 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_Get.cs @@ -0,0 +1,456 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains + /// URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format. + /// + /// + /// [OpenAPI] ExportJobsOperationResult_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/operations/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionExportJobsOperationResult_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionExportJobsOperationResult_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _operationId; + + /// OperationID which represents the export job. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "OperationID which represents the export job.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"OperationID which represents the export job.", + SerializedName = @"operationId", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string OperationId { get => this._operationId; set => this._operationId = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionExportJobsOperationResult_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ExportJobsOperationResultGet(SubscriptionId, ResourceGroupName, VaultName, OperationId, onOk, onAccepted, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,ResourceGroupName=ResourceGroupName,VaultName=VaultName,OperationId=OperationId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_GetViaIdentity.cs new file mode 100644 index 000000000000..16a01e6d85b8 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionExportJobsOperationResult_GetViaIdentity.cs @@ -0,0 +1,425 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains + /// URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format. + /// + /// + /// [OpenAPI] ExportJobsOperationResult_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/operations/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionExportJobsOperationResult_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation result of operation triggered by Export Jobs API. If the operation is successful, then it also contains URL of a Blob and a SAS key to access the same. The blob contains exported jobs in JSON serialized format.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionExportJobsOperationResult_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionExportJobsOperationResult_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ExportJobsOperationResultGetViaIdentity(InputObject.Id, onOk, onAccepted, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.OperationId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.OperationId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ExportJobsOperationResultGet(InputObject.SubscriptionId ?? null, InputObject.ResourceGroupName ?? null, InputObject.VaultName ?? null, InputObject.OperationId ?? null, onOk, onAccepted, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IExportJobsResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_Get.cs new file mode 100644 index 000000000000..d6502434b561 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_Get.cs @@ -0,0 +1,415 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a job with id in a backup vault + /// + /// [OpenAPI] Job_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionJob_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a job with id in a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionJob_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private string _id; + + /// + /// The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000). + /// + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The Job ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000).", + SerializedName = @"jobId", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("JobId")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Id { get => this._id; set => this._id = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionJob_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.JobGet(SubscriptionId, ResourceGroupName, VaultName, Id, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,ResourceGroupName=ResourceGroupName,VaultName=VaultName,Id=Id}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName, Id=Id }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName, Id=Id }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_GetViaIdentity.cs new file mode 100644 index 000000000000..2b5177986d05 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_GetViaIdentity.cs @@ -0,0 +1,381 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a job with id in a backup vault + /// + /// [OpenAPI] Job_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs/{jobId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionJob_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a job with id in a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionJob_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionJob_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.JobGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.JobId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.JobId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.JobGet(InputObject.SubscriptionId ?? null, InputObject.ResourceGroupName ?? null, InputObject.VaultName ?? null, InputObject.JobId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_List.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_List.cs new file mode 100644 index 000000000000..b4239f4f6ebc --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionJob_List.cs @@ -0,0 +1,399 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns list of jobs belonging to a backup vault + /// + /// [OpenAPI] Jobs_List=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobs" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionJob_List")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupJobResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns list of jobs belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionJob_List : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionJob_List() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.JobsList(SubscriptionId, ResourceGroupName, VaultName, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,ResourceGroupName=ResourceGroupName,VaultName=VaultName}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_Get.cs new file mode 100644 index 000000000000..0ad3e276b2a5 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_Get.cs @@ -0,0 +1,381 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets the operation result for a resource + /// + /// [OpenAPI] OperationResult_Get=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationResults/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionOperationResult_Get")] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation result for a resource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionOperationResult_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Backing field for property. + private string _location; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Location { get => this._location; set => this._location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _operationId; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"operationId", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string OperationId { get => this._operationId; set => this._operationId = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionOperationResult_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.OperationResultGet(SubscriptionId, OperationId, Location, onAccepted, onNoContent, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,OperationId=OperationId,Location=Location}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_GetViaIdentity.cs new file mode 100644 index 000000000000..a2807d292aa6 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationResult_GetViaIdentity.cs @@ -0,0 +1,362 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets the operation result for a resource + /// + /// [OpenAPI] OperationResult_Get=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationResults/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionOperationResult_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation result for a resource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionOperationResult_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionOperationResult_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.OperationResultGetViaIdentity(InputObject.Id, onAccepted, onNoContent, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.OperationId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.OperationId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.Location) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.Location"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.OperationResultGet(InputObject.SubscriptionId ?? null, InputObject.OperationId ?? null, InputObject.Location ?? null, onAccepted, onNoContent, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_Get.cs new file mode 100644 index 000000000000..d324865b697f --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_Get.cs @@ -0,0 +1,396 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets the operation status for a resource. + /// + /// [OpenAPI] GetOperationStatus=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationStatus/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionOperationStatus_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation status for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionOperationStatus_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Backing field for property. + private string _location; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Location { get => this._location; set => this._location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _operationId; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"operationId", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string OperationId { get => this._operationId; set => this._operationId = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionOperationStatus_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.GetOperationStatus(SubscriptionId, Location, OperationId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,Location=Location,OperationId=OperationId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, Location=Location, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, Location=Location, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_GetViaIdentity.cs new file mode 100644 index 000000000000..2e0afb94802b --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperationStatus_GetViaIdentity.cs @@ -0,0 +1,377 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets the operation status for a resource. + /// + /// [OpenAPI] GetOperationStatus=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/locations/{location}/operationStatus/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionOperationStatus_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets the operation status for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionOperationStatus_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionOperationStatus_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.GetOperationStatusViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.Location) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.Location"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.OperationId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.OperationId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.GetOperationStatus(InputObject.SubscriptionId ?? null, InputObject.Location ?? null, InputObject.OperationId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IOperationResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperation_List.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperation_List.cs new file mode 100644 index 000000000000..f6f965973729 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionOperation_List.cs @@ -0,0 +1,361 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns the list of available operations. + /// + /// [OpenAPI] Operations_List=>GET:"/providers/Microsoft.DataProtection/operations" + /// + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.InternalExport] + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionOperation_List")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns the list of available operations.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionOperation_List : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionOperation_List() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.OperationsList(onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + var result = await response; + WriteObject(result.Value,true); + if (result.NextLink != null) + { + if (responseMessage.RequestMessage is System.Net.Http.HttpRequestMessage requestMessage ) + { + requestMessage = requestMessage.Clone(new global::System.Uri( result.NextLink ),Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Method.Get ); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.FollowingNextLink); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.OperationsList_Call(requestMessage, onOk, onDefault, this, Pipeline); + } + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_Get.cs new file mode 100644 index 000000000000..3c451bbf4a2f --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_Get.cs @@ -0,0 +1,413 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a list of Recovery Points for a DataSource in a vault. + /// + /// [OpenAPI] RecoveryPoints_GetList=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionRecoveryPointList_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a list of Recovery Points for a DataSource in a vault.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionRecoveryPointList_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionRecoveryPointList_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.RecoveryPointsGetList(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_GetViaIdentity.cs new file mode 100644 index 000000000000..a4f15c9b9625 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPointList_GetViaIdentity.cs @@ -0,0 +1,382 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a list of Recovery Points for a DataSource in a vault. + /// + /// [OpenAPI] RecoveryPoints_GetList=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionRecoveryPointList_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a list of Recovery Points for a DataSource in a vault.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionRecoveryPointList_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionRecoveryPointList_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.RecoveryPointsGetListViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.RecoveryPointsGetList(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_Get.cs new file mode 100644 index 000000000000..fdbe48f195e3 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_Get.cs @@ -0,0 +1,426 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a Recovery Point using recoveryPointId for a Datasource. + /// + /// [OpenAPI] RecoveryPoint_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints/{recoveryPointId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionRecoveryPoint_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a Recovery Point using recoveryPointId for a Datasource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionRecoveryPoint_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private string _id; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("RecoveryPointId")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Id { get => this._id; set => this._id = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionRecoveryPoint_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.RecoveryPointGet(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, Id, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,Id=Id}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, Id=Id }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, Id=Id }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_GetViaIdentity.cs new file mode 100644 index 000000000000..ba7282d2c6f3 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionRecoveryPoint_GetViaIdentity.cs @@ -0,0 +1,385 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Gets a Recovery Point using recoveryPointId for a Datasource. + /// + /// [OpenAPI] RecoveryPoint_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints/{recoveryPointId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionRecoveryPoint_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Gets a Recovery Point using recoveryPointId for a Datasource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionRecoveryPoint_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionRecoveryPoint_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.RecoveryPointGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.RecoveryPointId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.RecoveryPointId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.RecoveryPointGet(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, InputObject.RecoveryPointId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRecoveryPointResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get.cs new file mode 100644 index 000000000000..f0ec44050411 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get.cs @@ -0,0 +1,371 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns ResourceOperationGateKeepers collection belonging to a subscription. + /// + /// [OpenAPI] ResourceOperationGatekeepers_GetResourcesInSubscription=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeperResource_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns ResourceOperationGateKeepers collection belonging to a subscription.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeperResource_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeperResource_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersGetResourcesInSubscription(SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get1.cs new file mode 100644 index 000000000000..28f979691d7c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_Get1.cs @@ -0,0 +1,385 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup + /// + /// [OpenAPI] ResourceOperationGatekeepers_GetResourcesInResourceGroup=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeperResource_Get1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeperResource_Get1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeperResource_Get1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersGetResourcesInResourceGroup(ResourceGroupName, SubscriptionId, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity.cs new file mode 100644 index 000000000000..360ed09b7c68 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity.cs @@ -0,0 +1,371 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns ResourceOperationGateKeepers collection belonging to a subscription. + /// + /// [OpenAPI] ResourceOperationGatekeepers_GetResourcesInSubscription=>GET:"/subscriptions/{subscriptionId}/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns ResourceOperationGateKeepers collection belonging to a subscription.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the + /// cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersGetResourcesInSubscriptionViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersGetResourcesInSubscription(InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1.cs new file mode 100644 index 000000000000..6fc2aa8d5cca --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1.cs @@ -0,0 +1,375 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup + /// + /// [OpenAPI] ResourceOperationGatekeepers_GetResourcesInResourceGroup=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns ResourceOperationGateKeepers collection belonging to a ResourceGroup")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1 : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the + /// cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeperResource_GetViaIdentity1() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersGetResourcesInResourceGroupViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersGetResourcesInResourceGroup(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // response should be returning an array of some kind. +Pageable + // pageable / value / nextLink + WriteObject((await response).Value, true); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_Get.cs new file mode 100644 index 000000000000..1a75736f4876 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_Get.cs @@ -0,0 +1,399 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a ResourceOperationGateKeeper belonging to a resource group. + /// + /// [OpenAPI] ResourceOperationGatekeepers_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeper_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a ResourceOperationGateKeeper belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeper_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of the ResourceOperationGateKeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the ResourceOperationGateKeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the ResourceOperationGateKeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeper_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersGet(ResourceGroupName, SubscriptionId, SName, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity.cs new file mode 100644 index 000000000000..9554fa0c756d --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity.cs @@ -0,0 +1,377 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Returns a ResourceOperationGateKeeper belonging to a resource group. + /// + /// [OpenAPI] ResourceOperationGatekeepers_Get=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationGatekeeper_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Returns a ResourceOperationGateKeeper belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionResourceOperationGatekeeper_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersGetViaIdentity(InputObject.Id, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceOperationGateKeepersName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceOperationGateKeepersName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersGet(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.ResourceOperationGateKeepersName ?? null, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_Get.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_Get.cs new file mode 100644 index 000000000000..b3154897f3ad --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_Get.cs @@ -0,0 +1,451 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] GetOperationResultPatch=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/operationResults/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationResultPatch_Get")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationResultPatch_Get : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _operationId; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"operationId", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string OperationId { get => this._operationId; set => this._operationId = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string[] _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string[] SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public GetAzDataProtectionResourceOperationResultPatch_Get() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + foreach( var SubscriptionId in this.SubscriptionId ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.GetOperationResultPatch(VaultName, ResourceGroupName, SubscriptionId, OperationId, onOk, onAccepted, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,OperationId=OperationId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, OperationId=OperationId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity.cs b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity.cs new file mode 100644 index 000000000000..784e229ea886 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity.cs @@ -0,0 +1,422 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] GetOperationResultPatch=>GET:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/operationResults/{operationId}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Get, @"AzDataProtectionResourceOperationResultPatch_GetViaIdentity")] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnAccepted will be called before the regular onAccepted has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onAccepted method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnAccepted(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public GetAzDataProtectionResourceOperationResultPatch_GetViaIdentity() + { + + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.GetOperationResultPatchViaIdentity(InputObject.Id, onOk, onAccepted, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.OperationId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.OperationId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.GetOperationResultPatch(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.OperationId ?? null, onOk, onAccepted, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// a delegate that is called when the remote service returns 202 (Accepted). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onAccepted(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnAccepted(responseMessage, ref _returnNow); + // if overrideOnAccepted has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onAccepted - response for 202 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_Delete.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_Delete.cs new file mode 100644 index 000000000000..c7cda4d15249 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_Delete.cs @@ -0,0 +1,484 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] BackupInstances_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupInstance_Delete", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupInstance_Delete : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupInstanceName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of RemoveAzDataProtectionBackupInstance_Delete + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.RemoveAzDataProtectionBackupInstance_Delete Clone() + { + var clone = new RemoveAzDataProtectionBackupInstance_Delete(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Name = this.Name; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesDelete' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesDelete(VaultName, ResourceGroupName, SubscriptionId, Name, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupInstance_Delete() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_DeleteViaIdentity.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_DeleteViaIdentity.cs new file mode 100644 index 000000000000..3b0b31ff9629 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupInstance_DeleteViaIdentity.cs @@ -0,0 +1,451 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] BackupInstances_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupInstance_DeleteViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupInstance_DeleteViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of RemoveAzDataProtectionBackupInstance_DeleteViaIdentity + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.RemoveAzDataProtectionBackupInstance_DeleteViaIdentity Clone() + { + var clone = new RemoveAzDataProtectionBackupInstance_DeleteViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesDelete' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesDeleteViaIdentity(InputObject.Id, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesDelete(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupInstance_DeleteViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_Delete.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_Delete.cs new file mode 100644 index 000000000000..e4b4c13ffbb1 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_Delete.cs @@ -0,0 +1,451 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupPolicy_Delete", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupPolicy_Delete : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupPolicyName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupPolicyName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupPoliciesDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupPoliciesDelete(VaultName, ResourceGroupName, SubscriptionId, Name, onOk, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupPolicy_Delete() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity.cs new file mode 100644 index 000000000000..1a380b37fd1e --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity.cs @@ -0,0 +1,423 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupPolicy_DeleteViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupPoliciesDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupPoliciesDeleteViaIdentity(InputObject.Id, onOk, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupPolicyName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupPolicyName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupPoliciesDelete(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupPolicyName ?? null, onOk, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupPolicy_DeleteViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_Delete.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_Delete.cs new file mode 100644 index 000000000000..d0d5a330e9a8 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_Delete.cs @@ -0,0 +1,437 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a BackupVault resource from the resource group. + /// + /// [OpenAPI] BackupVaults_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupVault_Delete", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a BackupVault resource from the resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupVault_Delete : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsDelete(VaultName, ResourceGroupName, SubscriptionId, onOk, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupVault_Delete() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_DeleteViaIdentity.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_DeleteViaIdentity.cs new file mode 100644 index 000000000000..620f549b843a --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionBackupVault_DeleteViaIdentity.cs @@ -0,0 +1,419 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a BackupVault resource from the resource group. + /// + /// [OpenAPI] BackupVaults_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionBackupVault_DeleteViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a BackupVault resource from the resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionBackupVault_DeleteViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsDeleteViaIdentity(InputObject.Id, onOk, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsDelete(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, onOk, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionBackupVault_DeleteViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_Delete.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_Delete.cs new file mode 100644 index 000000000000..aad52b1ae36b --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_Delete.cs @@ -0,0 +1,438 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a ResourceOperationGateKeeper resource from the resource group. + /// + /// [OpenAPI] ResourceOperationGatekeepers_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionResourceOperationGatekeeper_Delete", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a ResourceOperationGateKeeper resource from the resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionResourceOperationGatekeeper_Delete : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of ResourceOperationGatekeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of ResourceOperationGatekeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of ResourceOperationGatekeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersDelete(ResourceGroupName, SubscriptionId, SName, onOk, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public RemoveAzDataProtectionResourceOperationGatekeeper_Delete() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity.cs b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity.cs new file mode 100644 index 000000000000..d0c745f0aeeb --- /dev/null +++ b/src/DataProtection/generated/cmdlets/RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity.cs @@ -0,0 +1,420 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Deletes a ResourceOperationGateKeeper resource from the resource group. + /// + /// [OpenAPI] ResourceOperationGatekeepers_Delete=>DELETE:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Remove, @"AzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Deletes a ResourceOperationGateKeeper resource from the resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersDelete' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersDeleteViaIdentity(InputObject.Id, onOk, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceOperationGateKeepersName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceOperationGateKeepersName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersDelete(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.ResourceOperationGateKeepersName ?? null, onOk, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public RemoveAzDataProtectionResourceOperationGatekeeper_DeleteViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_Put.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_Put.cs new file mode 100644 index 000000000000..2edbb59f1770 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_Put.cs @@ -0,0 +1,493 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] BackupInstances_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupInstance_Put", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupInstance_Put : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupInstanceName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource _parameter; + + /// BackupInstance Resource + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "BackupInstance Resource", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"BackupInstance Resource", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of SetAzDataProtectionBackupInstance_Put + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.SetAzDataProtectionBackupInstance_Put Clone() + { + var clone = new SetAzDataProtectionBackupInstance_Put(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Name = this.Name; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesPut' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesPut(VaultName, ResourceGroupName, SubscriptionId, Name, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupInstance_Put() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_PutExpanded.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_PutExpanded.cs new file mode 100644 index 000000000000..a2a4d260c61a --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupInstance_PutExpanded.cs @@ -0,0 +1,497 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// [OpenAPI] BackupInstances_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupInstance_PutExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupInstance_PutExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupInstanceName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupInstanceResource(); + + /// BackupInstance Resource + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// BackupInstanceResource properties + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "BackupInstanceResource properties")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"BackupInstanceResource properties", + SerializedName = @"properties", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance Property { get => ParametersBody.Property ?? null /* object */; set => ParametersBody.Property = value; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of SetAzDataProtectionBackupInstance_PutExpanded + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.SetAzDataProtectionBackupInstance_PutExpanded Clone() + { + var clone = new SetAzDataProtectionBackupInstance_PutExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Name = this.Name; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesPut' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesPut(VaultName, ResourceGroupName, SubscriptionId, Name, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupInstance_PutExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstanceResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_Put.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_Put.cs new file mode 100644 index 000000000000..2f6750e1d09d --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_Put.cs @@ -0,0 +1,425 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Creates or Updates a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupPolicy_Put", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or Updates a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupPolicy_Put : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupPolicyName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupPolicyName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource _parameter; + + /// BaseBackupPolicy resource + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "BaseBackupPolicy resource", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"BaseBackupPolicy resource", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupPoliciesPut' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupPoliciesPut(VaultName, ResourceGroupName, SubscriptionId, Name, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupPolicy_Put() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_PutExpanded.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_PutExpanded.cs new file mode 100644 index 000000000000..4cdd7b606aca --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupPolicy_PutExpanded.cs @@ -0,0 +1,441 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Creates or Updates a backup policy belonging to a backup vault + /// + /// [OpenAPI] BackupPolicies_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupPolicies/{backupPolicyName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupPolicy_PutExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or Updates a backup policy belonging to a backup vault")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupPolicy_PutExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// Type of datasource for the backup management + [global::System.Management.Automation.AllowEmptyCollection] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Type of datasource for the backup management")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Type of datasource for the backup management", + SerializedName = @"datasourceTypes", + PossibleTypes = new [] { typeof(string) })] + public string[] DatasourceType { get => ParametersBody.DatasourceType ?? null /* arrayOf */; set => ParametersBody.DatasourceType = value; } + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private string _name; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupPolicyName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("BackupPolicyName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Name { get => this._name; set => this._name = value; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @".", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string ObjectType { get => ParametersBody.ObjectType ?? null; set => ParametersBody.ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BaseBackupPolicyResource(); + + /// BaseBackupPolicy resource + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupPoliciesPut' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupPoliciesPut(VaultName, ResourceGroupName, SubscriptionId, Name, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Name=Name,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupPolicy_PutExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Name=Name, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBaseBackupPolicyResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_Put.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_Put.cs new file mode 100644 index 000000000000..68ee13b5015c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_Put.cs @@ -0,0 +1,478 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Creates or updates a BackupVault resource belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupVault_Put", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or updates a BackupVault resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupVault_Put : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource _parameter; + + /// Backup Vault Resource + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Backup Vault Resource", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Backup Vault Resource", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of SetAzDataProtectionBackupVault_Put + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.SetAzDataProtectionBackupVault_Put Clone() + { + var clone = new SetAzDataProtectionBackupVault_Put(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPut' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsPut(VaultName, ResourceGroupName, SubscriptionId, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupVault_Put() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_PutExpanded.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_PutExpanded.cs new file mode 100644 index 000000000000..7e1827c30b15 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionBackupVault_PutExpanded.cs @@ -0,0 +1,528 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Creates or updates a BackupVault resource belonging to a resource group. + /// + /// [OpenAPI] BackupVaults_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionBackupVault_PutExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or updates a BackupVault resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionBackupVault_PutExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// Optional ETag. + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Optional ETag.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Optional ETag.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + public string ETag { get => ParametersBody.ETag ?? null; set => ParametersBody.ETag = value; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Resource location. + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource location.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource location.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + public string Location { get => ParametersBody.Location ?? null; set => ParametersBody.Location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.BackupVaultResource(); + + /// Backup Vault Resource + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Storage Settings + [global::System.Management.Automation.AllowEmptyCollection] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Storage Settings")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Storage Settings", + SerializedName = @"storageSettings", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IStorageSetting[] StorageSetting { get => ParametersBody.StorageSetting ?? null /* arrayOf */; set => ParametersBody.StorageSetting = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of SetAzDataProtectionBackupVault_PutExpanded + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.SetAzDataProtectionBackupVault_PutExpanded Clone() + { + var clone = new SetAzDataProtectionBackupVault_PutExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPut' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsPut(VaultName, ResourceGroupName, SubscriptionId, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionBackupVault_PutExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_Put.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_Put.cs new file mode 100644 index 000000000000..f42fe4d64862 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_Put.cs @@ -0,0 +1,414 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionResourceOperationGatekeeper_Put", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionResourceOperationGatekeeper_Put : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource _parameter; + + /// ResourceOperationGateKeeper Resource + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "ResourceOperationGateKeeper Resource", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"ResourceOperationGateKeeper Resource", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of ResourceOperationGatekeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of ResourceOperationGatekeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of ResourceOperationGatekeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPut' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersPut(ResourceGroupName, SubscriptionId, SName, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionResourceOperationGatekeeper_Put() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_PutExpanded.cs b/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_PutExpanded.cs new file mode 100644 index 000000000000..8330c024b8aa --- /dev/null +++ b/src/DataProtection/generated/cmdlets/SetAzDataProtectionResourceOperationGatekeeper_PutExpanded.cs @@ -0,0 +1,452 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Put=>PUT:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsCommon.Set, @"AzDataProtectionResourceOperationGatekeeper_PutExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Creates or updates a ResourceOperationGatekeeper resource belonging to a resource group.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class SetAzDataProtectionResourceOperationGatekeeper_PutExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// Optional ETag. + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Optional ETag.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Optional ETag.", + SerializedName = @"eTag", + PossibleTypes = new [] { typeof(string) })] + public string ETag { get => ParametersBody.ETag ?? null; set => ParametersBody.ETag = value; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Resource location. + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource location.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource location.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + public string Location { get => ParametersBody.Location ?? null; set => ParametersBody.Location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ResourceOperationGateKeeperResource(); + + /// ResourceOperationGateKeeper Resource + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of ResourceOperationGatekeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of ResourceOperationGatekeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of ResourceOperationGatekeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IDppTrackedResourceTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPut' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersPut(ResourceGroupName, SubscriptionId, SName, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public SetAzDataProtectionResourceOperationGatekeeper_PutExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_Trigger.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_Trigger.cs new file mode 100644 index 000000000000..8999d101936a --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_Trigger.cs @@ -0,0 +1,497 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// rehydrate recovery point for restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRehydrate=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRehydrate_Trigger", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"rehydrate recovery point for restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRehydrate_Trigger : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest _parameter; + + /// Azure Backup Rehydrate Request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Azure Backup Rehydrate Request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Azure Backup Rehydrate Request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of StartAzDataProtectionBackupInstanceRehydrate_Trigger + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRehydrate_Trigger Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRehydrate_Trigger(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.VaultName = this.VaultName; + clone.BackupInstanceName = this.BackupInstanceName; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRehydrate' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesTriggerRehydrate(ResourceGroupName, SubscriptionId, VaultName, BackupInstanceName, Parameter, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,VaultName=VaultName,BackupInstanceName=BackupInstanceName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRehydrate_Trigger() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, VaultName=VaultName, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, VaultName=VaultName, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded.cs new file mode 100644 index 000000000000..ece82265e2ef --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded.cs @@ -0,0 +1,526 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// rehydrate recovery point for restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRehydrate=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRehydrate_TriggerExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"rehydrate recovery point for restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRehydrationRequest(); + + /// Azure Backup Rehydrate Request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Id of the recovery point to be recovered + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Id of the recovery point to be recovered")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Id of the recovery point to be recovered", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + public string RecoveryPointId { get => ParametersBody.RecoveryPointId ?? null; set => ParametersBody.RecoveryPointId = value; } + + /// Priority to be used for rehydration. Values High or Standard + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Priority to be used for rehydration. Values High or Standard")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Priority to be used for rehydration. Values High or Standard", + SerializedName = @"rehydrationPriority", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority RehydrationPriority { get => ParametersBody.RehydrationPriority ?? ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority)""); set => ParametersBody.RehydrationPriority = value; } + + /// Retention duration in ISO 8601 format i.e P10D . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Retention duration in ISO 8601 format i.e P10D .")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention duration in ISO 8601 format i.e P10D .", + SerializedName = @"rehydrationRetentionDuration", + PossibleTypes = new [] { typeof(string) })] + public string RehydrationRetentionDuration { get => ParametersBody.RehydrationRetentionDuration ?? null; set => ParametersBody.RehydrationRetentionDuration = value; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.VaultName = this.VaultName; + clone.BackupInstanceName = this.BackupInstanceName; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRehydrate' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesTriggerRehydrate(ResourceGroupName, SubscriptionId, VaultName, BackupInstanceName, ParametersBody, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,VaultName=VaultName,BackupInstanceName=BackupInstanceName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRehydrate_TriggerExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, VaultName=VaultName, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, VaultName=VaultName, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity.cs new file mode 100644 index 000000000000..e604768d4277 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity.cs @@ -0,0 +1,469 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// rehydrate recovery point for restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRehydrate=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"rehydrate recovery point for restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest _parameter; + + /// Azure Backup Rehydrate Request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Azure Backup Rehydrate Request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Azure Backup Rehydrate Request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRehydrate' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesTriggerRehydrateViaIdentity(InputObject.Id, Parameter, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesTriggerRehydrate(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.VaultName ?? null, InputObject.BackupInstanceName ?? null, Parameter, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded.cs new file mode 100644 index 000000000000..4c6c9712d915 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded.cs @@ -0,0 +1,496 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// rehydrate recovery point for restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRehydrate=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/rehydrate" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"rehydrate recovery point for restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRehydrationRequest(); + + /// Azure Backup Rehydrate Request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRehydrationRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Id of the recovery point to be recovered + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Id of the recovery point to be recovered")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Id of the recovery point to be recovered", + SerializedName = @"recoveryPointId", + PossibleTypes = new [] { typeof(string) })] + public string RecoveryPointId { get => ParametersBody.RecoveryPointId ?? null; set => ParametersBody.RecoveryPointId = value; } + + /// Priority to be used for rehydration. Values High or Standard + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Priority to be used for rehydration. Values High or Standard")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Priority to be used for rehydration. Values High or Standard", + SerializedName = @"rehydrationPriority", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority RehydrationPriority { get => ParametersBody.RehydrationPriority ?? ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.RehydrationPriority)""); set => ParametersBody.RehydrationPriority = value; } + + /// Retention duration in ISO 8601 format i.e P10D . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Retention duration in ISO 8601 format i.e P10D .")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Retention duration in ISO 8601 format i.e P10D .", + SerializedName = @"rehydrationRetentionDuration", + PossibleTypes = new [] { typeof(string) })] + public string RehydrationRetentionDuration { get => ParametersBody.RehydrationRetentionDuration ?? null; set => ParametersBody.RehydrationRetentionDuration = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRehydrate' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesTriggerRehydrateViaIdentity(InputObject.Id, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesTriggerRehydrate(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.VaultName ?? null, InputObject.BackupInstanceName ?? null, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the + /// cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRehydrate_TriggerViaIdentityExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_Trigger.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_Trigger.cs new file mode 100644 index 000000000000..341b1d175d58 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_Trigger.cs @@ -0,0 +1,498 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRestore_Trigger", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRestore_Trigger : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest _parameter; + + /// Azure backup restore request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Azure backup restore request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Azure backup restore request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of StartAzDataProtectionBackupInstanceRestore_Trigger + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRestore_Trigger Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRestore_Trigger(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesTriggerRestore(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, Parameter, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRestore_Trigger() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerExpanded.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerExpanded.cs new file mode 100644 index 000000000000..981c8b8ca5bc --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerExpanded.cs @@ -0,0 +1,538 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRestore_TriggerExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRestore_TriggerExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string ObjectType { get => ParametersBody.ObjectType ?? null; set => ParametersBody.ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest(); + + /// Azure backup restore request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Type of Datasource object, used to initialize the right inherited type")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoObjectType { get => ParametersBody.RestoreTargetInfoObjectType ?? null; set => ParametersBody.RestoreTargetInfoObjectType = value; } + + /// Target Restore region + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Target Restore region")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoRestoreLocation { get => ParametersBody.RestoreTargetInfoRestoreLocation ?? null; set => ParametersBody.RestoreTargetInfoRestoreLocation = value; } + + /// Gets or sets the type of the source data store. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Gets or sets the type of the source data store.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get => ParametersBody.SourceDataStoreType; set => ParametersBody.SourceDataStoreType = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRestore_TriggerExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRestore_TriggerExpanded Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRestore_TriggerExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesTriggerRestore(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, ParametersBody, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRestore_TriggerExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity.cs new file mode 100644 index 000000000000..690a111e4c58 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity.cs @@ -0,0 +1,468 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRestore_TriggerViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest _parameter; + + /// Azure backup restore request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Azure backup restore request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Azure backup restore request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesTriggerRestoreViaIdentity(InputObject.Id, Parameter, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesTriggerRestore(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, Parameter, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded.cs new file mode 100644 index 000000000000..206255bd0970 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded.cs @@ -0,0 +1,507 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers restore for a BackupInstance + /// + /// [OpenAPI] BackupInstances_TriggerRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers restore for a BackupInstance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string ObjectType { get => ParametersBody.ObjectType ?? null; set => ParametersBody.ObjectType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.AzureBackupRestoreRequest(); + + /// Azure backup restore request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IAzureBackupRestoreRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Type of Datasource object, used to initialize the right inherited type + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Type of Datasource object, used to initialize the right inherited type")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoObjectType { get => ParametersBody.RestoreTargetInfoObjectType ?? null; set => ParametersBody.RestoreTargetInfoObjectType = value; } + + /// Target Restore region + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Target Restore region")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoRestoreLocation { get => ParametersBody.RestoreTargetInfoRestoreLocation ?? null; set => ParametersBody.RestoreTargetInfoRestoreLocation = value; } + + /// Gets or sets the type of the source data store. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Gets or sets the type of the source data store.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType SourceDataStoreType { get => ParametersBody.SourceDataStoreType; set => ParametersBody.SourceDataStoreType = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded Clone() + { + var clone = new StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesTriggerRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesTriggerRestoreViaIdentity(InputObject.Id, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesTriggerRestore(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the + /// cmdlet class. + /// + public StartAzDataProtectionBackupInstanceRestore_TriggerViaIdentityExpanded() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_Trigger.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_Trigger.cs new file mode 100644 index 000000000000..fcd2c3fcb58e --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_Trigger.cs @@ -0,0 +1,469 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers export of jobs and returns an OperationID to track. + /// + /// [OpenAPI] ExportJobs_Trigger=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobsExport" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionExportJob_Trigger", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers export of jobs and returns an OperationID to track.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionExportJob_Trigger : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of StartAzDataProtectionExportJob_Trigger + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionExportJob_Trigger Clone() + { + var clone = new StartAzDataProtectionExportJob_Trigger(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.SubscriptionId = this.SubscriptionId; + clone.ResourceGroupName = this.ResourceGroupName; + clone.VaultName = this.VaultName; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ExportJobsTrigger' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ExportJobsTrigger(SubscriptionId, ResourceGroupName, VaultName, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId,ResourceGroupName=ResourceGroupName,VaultName=VaultName}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionExportJob_Trigger() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { SubscriptionId=SubscriptionId, ResourceGroupName=ResourceGroupName, VaultName=VaultName }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_TriggerViaIdentity.cs b/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_TriggerViaIdentity.cs new file mode 100644 index 000000000000..e94af8903cb9 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/StartAzDataProtectionExportJob_TriggerViaIdentity.cs @@ -0,0 +1,448 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Triggers export of jobs and returns an OperationID to track. + /// + /// [OpenAPI] ExportJobs_Trigger=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupJobsExport" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsLifecycle.Start, @"AzDataProtectionExportJob_TriggerViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Triggers export of jobs and returns an OperationID to track.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class StartAzDataProtectionExportJob_TriggerViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of StartAzDataProtectionExportJob_TriggerViaIdentity + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.StartAzDataProtectionExportJob_TriggerViaIdentity Clone() + { + var clone = new StartAzDataProtectionExportJob_TriggerViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ExportJobsTrigger' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ExportJobsTriggerViaIdentity(InputObject.Id, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ExportJobsTrigger(InputObject.SubscriptionId ?? null, InputObject.ResourceGroupName ?? null, InputObject.VaultName ?? null, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public StartAzDataProtectionExportJob_TriggerViaIdentity() + { + + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_Validate.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_Validate.cs new file mode 100644 index 000000000000..0ebf8f5fd980 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_Validate.cs @@ -0,0 +1,498 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validates if Restore can be triggered for a DataSource + /// + /// [OpenAPI] BackupInstances_ValidateRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstanceRestore_Validate", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validates if Restore can be triggered for a DataSource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstanceRestore_Validate : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject _parameter; + + /// Validate restore request object + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Validate restore request object", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Validate restore request object", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of TestAzDataProtectionBackupInstanceRestore_Validate + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstanceRestore_Validate Clone() + { + var clone = new TestAzDataProtectionBackupInstanceRestore_Validate(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesValidateRestore(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, Parameter, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstanceRestore_Validate() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateExpanded.cs new file mode 100644 index 000000000000..2bebf44aaf14 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateExpanded.cs @@ -0,0 +1,538 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validates if Restore can be triggered for a DataSource + /// + /// [OpenAPI] BackupInstances_ValidateRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstanceRestore_ValidateExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validates if Restore can be triggered for a DataSource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstanceRestore_ValidateExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backing field for property. + private string _backupInstanceName; + + /// The name of the backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup instance")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup instance", + SerializedName = @"backupInstanceName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string BackupInstanceName { get => this._backupInstanceName; set => this._backupInstanceName = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ValidateRestoreRequestObject(); + + /// Validate restore request object + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Gets or sets the type of the source data store. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Gets or sets the type of the source data store.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType RestoreRequestObjectSourceDataStoreType { get => ParametersBody.RestoreRequestObjectSourceDataStoreType; set => ParametersBody.RestoreRequestObjectSourceDataStoreType = value; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreRequestObjectType { get => ParametersBody.RestoreRequestObjectType ?? null; set => ParametersBody.RestoreRequestObjectType = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Type of Datasource object, used to initialize the right inherited type")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoObjectType { get => ParametersBody.RestoreTargetInfoObjectType ?? null; set => ParametersBody.RestoreTargetInfoObjectType = value; } + + /// Target Restore region + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Target Restore region")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoRestoreLocation { get => ParametersBody.RestoreTargetInfoRestoreLocation ?? null; set => ParametersBody.RestoreTargetInfoRestoreLocation = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of TestAzDataProtectionBackupInstanceRestore_ValidateExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstanceRestore_ValidateExpanded Clone() + { + var clone = new TestAzDataProtectionBackupInstanceRestore_ValidateExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.BackupInstanceName = this.BackupInstanceName; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesValidateRestore(VaultName, ResourceGroupName, SubscriptionId, BackupInstanceName, ParametersBody, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,BackupInstanceName=BackupInstanceName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstanceRestore_ValidateExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, BackupInstanceName=BackupInstanceName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity.cs new file mode 100644 index 000000000000..e390a37c4062 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity.cs @@ -0,0 +1,468 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validates if Restore can be triggered for a DataSource + /// + /// [OpenAPI] BackupInstances_ValidateRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstanceRestore_ValidateViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validates if Restore can be triggered for a DataSource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject _parameter; + + /// Validate restore request object + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Validate restore request object", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Validate restore request object", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity Clone() + { + var clone = new TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesValidateRestoreViaIdentity(InputObject.Id, Parameter, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesValidateRestore(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, Parameter, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentity() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded.cs new file mode 100644 index 000000000000..8909fbeaa595 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded.cs @@ -0,0 +1,507 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validates if Restore can be triggered for a DataSource + /// + /// [OpenAPI] BackupInstances_ValidateRestore=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validates if Restore can be triggered for a DataSource")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ValidateRestoreRequestObject(); + + /// Validate restore request object + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateRestoreRequestObject ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Gets or sets the type of the source data store. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Gets or sets the type of the source data store.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Gets or sets the type of the source data store.", + SerializedName = @"sourceDataStoreType", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType) })] + [global::System.Management.Automation.ArgumentCompleter(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType))] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support.SourceDataStoreType RestoreRequestObjectSourceDataStoreType { get => ParametersBody.RestoreRequestObjectSourceDataStoreType; set => ParametersBody.RestoreRequestObjectSourceDataStoreType = value; } + + /// . + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = ".")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @".", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreRequestObjectType { get => ParametersBody.RestoreRequestObjectType ?? null; set => ParametersBody.RestoreRequestObjectType = value; } + + /// Type of Datasource object, used to initialize the right inherited type + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Type of Datasource object, used to initialize the right inherited type")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Type of Datasource object, used to initialize the right inherited type", + SerializedName = @"objectType", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoObjectType { get => ParametersBody.RestoreTargetInfoObjectType ?? null; set => ParametersBody.RestoreTargetInfoObjectType = value; } + + /// Target Restore region + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Target Restore region")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Target Restore region", + SerializedName = @"restoreLocation", + PossibleTypes = new [] { typeof(string) })] + public string RestoreTargetInfoRestoreLocation { get => ParametersBody.RestoreTargetInfoRestoreLocation ?? null; set => ParametersBody.RestoreTargetInfoRestoreLocation = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded Clone() + { + var clone = new TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateRestore' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesValidateRestoreViaIdentity(InputObject.Id, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.BackupInstanceName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.BackupInstanceName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesValidateRestore(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.BackupInstanceName ?? null, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the + /// cmdlet class. + /// + public TestAzDataProtectionBackupInstanceRestore_ValidateViaIdentityExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_Validate.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_Validate.cs new file mode 100644 index 000000000000..aef338f8cf22 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_Validate.cs @@ -0,0 +1,483 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate whether adhoc backup will be successful or not + /// + /// [OpenAPI] BackupInstances_ValidateForBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstance_Validate", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validate whether adhoc backup will be successful or not")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstance_Validate : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest _parameter; + + /// Validate for backup request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Validate for backup request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Validate for backup request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of TestAzDataProtectionBackupInstance_Validate + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstance_Validate Clone() + { + var clone = new TestAzDataProtectionBackupInstance_Validate(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateForBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesValidateForBackup(VaultName, ResourceGroupName, SubscriptionId, Parameter, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstance_Validate() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateExpanded.cs new file mode 100644 index 000000000000..b3249207a9fa --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateExpanded.cs @@ -0,0 +1,487 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate whether adhoc backup will be successful or not + /// + /// [OpenAPI] BackupInstances_ValidateForBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstance_ValidateExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validate whether adhoc backup will be successful or not")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstance_ValidateExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Backup instance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Backup instance", + SerializedName = @"backupInstance", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance BackupInstance { get => ParametersBody.BackupInstance ?? null /* object */; set => ParametersBody.BackupInstance = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ValidateForBackupRequest(); + + /// Validate for backup request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of TestAzDataProtectionBackupInstance_ValidateExpanded + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstance_ValidateExpanded Clone() + { + var clone = new TestAzDataProtectionBackupInstance_ValidateExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateForBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupInstancesValidateForBackup(VaultName, ResourceGroupName, SubscriptionId, ParametersBody, onNoContent, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstance_ValidateExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentity.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentity.cs new file mode 100644 index 000000000000..82ba3552e58f --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentity.cs @@ -0,0 +1,462 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate whether adhoc backup will be successful or not + /// + /// [OpenAPI] BackupInstances_ValidateForBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstance_ValidateViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validate whether adhoc backup will be successful or not")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstance_ValidateViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest _parameter; + + /// Validate for backup request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Validate for backup request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Validate for backup request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of TestAzDataProtectionBackupInstance_ValidateViaIdentity + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstance_ValidateViaIdentity Clone() + { + var clone = new TestAzDataProtectionBackupInstance_ValidateViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateForBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesValidateForBackupViaIdentity(InputObject.Id, Parameter, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesValidateForBackup(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, Parameter, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupInstance_ValidateViaIdentity() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded.cs new file mode 100644 index 000000000000..ec694e4c4960 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded.cs @@ -0,0 +1,469 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// Validate whether adhoc backup will be successful or not + /// + /// [OpenAPI] BackupInstances_ValidateForBackup=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/validateForBackup" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupInstance_ValidateViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(bool))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Validate whether adhoc backup will be successful or not")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Backup instance + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Backup instance")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Backup instance", + SerializedName = @"backupInstance", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupInstance BackupInstance { get => ParametersBody.BackupInstance ?? null /* object */; set => ParametersBody.BackupInstance = value; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ValidateForBackupRequest(); + + /// Validate for backup request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IValidateForBackupRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// When specified, forces the cmdlet return a 'bool' given that there isn't a return type by default. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Returns true when the command succeeds")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter PassThru { get; set; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnNoContent will be called before the regular onNoContent has been processed, allowing customization of + /// what happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// /// Determines if the rest of the onNoContent method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnNoContent(global::System.Net.Http.HttpResponseMessage responseMessage, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded Clone() + { + var clone = new TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupInstancesValidateForBackup' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupInstancesValidateForBackupViaIdentity(InputObject.Id, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupInstancesValidateForBackup(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, ParametersBody, onNoContent, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public TestAzDataProtectionBackupInstance_ValidateViaIdentityExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 204 (NoContent). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onNoContent(global::System.Net.Http.HttpResponseMessage responseMessage) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnNoContent(responseMessage, ref _returnNow); + // if overrideOnNoContent has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onNoContent - response for 204 / + if (true == MyInvocation?.BoundParameters?.ContainsKey("PassThru")) + { + WriteObject(true); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_Check.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_Check.cs new file mode 100644 index 000000000000..04686d95efc1 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_Check.cs @@ -0,0 +1,411 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// API to check for resource name availability + /// + /// [OpenAPI] BackupVaults_CheckNameAvailability=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/checkNameAvailability" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupVaultNameAvailability_Check", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"API to check for resource name availability")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupVaultNameAvailability_Check : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Backing field for property. + private string _location; + + /// The location in which uniqueness will be verified. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The location in which uniqueness will be verified.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The location in which uniqueness will be verified.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Location { get => this._location; set => this._location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest _parameter; + + /// CheckNameAvailability Request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "CheckNameAvailability Request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"CheckNameAvailability Request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsCheckNameAvailability' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsCheckNameAvailability(ResourceGroupName, SubscriptionId, Location, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Location=Location,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupVaultNameAvailability_Check() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Location=Location, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Location=Location, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded.cs new file mode 100644 index 000000000000..b7f65eeb7440 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded.cs @@ -0,0 +1,426 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// API to check for resource name availability + /// + /// [OpenAPI] BackupVaults_CheckNameAvailability=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/checkNameAvailability" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupVaultNameAvailability_CheckExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"API to check for resource name availability")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// Backing field for property. + private string _location; + + /// The location in which uniqueness will be verified. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The location in which uniqueness will be verified.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The location in which uniqueness will be verified.", + SerializedName = @"location", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string Location { get => this._location; set => this._location = value; } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Resource name for which availability needs to be checked + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource name for which availability needs to be checked")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource name for which availability needs to be checked", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + public string Name { get => ParametersBody.Name ?? null; set => ParametersBody.Name = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityRequest(); + + /// CheckNameAvailability Request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Describes the Resource type: Microsoft.DataProtection/BackupVaults + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Describes the Resource type: Microsoft.DataProtection/BackupVaults")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Describes the Resource type: Microsoft.DataProtection/BackupVaults", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string Type { get => ParametersBody.Type ?? null; set => ParametersBody.Type = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsCheckNameAvailability' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsCheckNameAvailability(ResourceGroupName, SubscriptionId, Location, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,Location=Location,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupVaultNameAvailability_CheckExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Location=Location, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, Location=Location, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity.cs new file mode 100644 index 000000000000..eba999a0e9d7 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity.cs @@ -0,0 +1,394 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// API to check for resource name availability + /// + /// [OpenAPI] BackupVaults_CheckNameAvailability=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/checkNameAvailability" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupVaultNameAvailability_CheckViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"API to check for resource name availability")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest _parameter; + + /// CheckNameAvailability Request + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "CheckNameAvailability Request", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"CheckNameAvailability Request", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsCheckNameAvailability' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsCheckNameAvailabilityViaIdentity(InputObject.Id, Parameter, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.Location) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.Location"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsCheckNameAvailability(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.Location ?? null, Parameter, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentity() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded.cs new file mode 100644 index 000000000000..7d6990864a11 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded.cs @@ -0,0 +1,409 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// API to check for resource name availability + /// + /// [OpenAPI] BackupVaults_CheckNameAvailability=>POST:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/locations/{location}/checkNameAvailability" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsDiagnostic.Test, @"AzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"API to check for resource name availability")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Resource name for which availability needs to be checked + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource name for which availability needs to be checked")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource name for which availability needs to be checked", + SerializedName = @"name", + PossibleTypes = new [] { typeof(string) })] + public string Name { get => ParametersBody.Name ?? null; set => ParametersBody.Name = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.CheckNameAvailabilityRequest(); + + /// CheckNameAvailability Request + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityRequest ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Describes the Resource type: Microsoft.DataProtection/BackupVaults + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Describes the Resource type: Microsoft.DataProtection/BackupVaults")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Describes the Resource type: Microsoft.DataProtection/BackupVaults", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string Type { get => ParametersBody.Type ?? null; set => ParametersBody.Type = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsCheckNameAvailability' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsCheckNameAvailabilityViaIdentity(InputObject.Id, ParametersBody, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.Location) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.Location"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsCheckNameAvailability(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.Location ?? null, ParametersBody, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public TestAzDataProtectionBackupVaultNameAvailability_CheckViaIdentityExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.ICheckNameAvailabilityResult + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_Patch.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_Patch.cs new file mode 100644 index 000000000000..568d1a9a75fc --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_Patch.cs @@ -0,0 +1,480 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] BackupVaults_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionBackupVault_Patch", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionBackupVault_Patch : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parameter; + + /// Patch Request content for Microsoft.DataProtection resources + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Patch Request content for Microsoft.DataProtection resources", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Patch Request content for Microsoft.DataProtection resources", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of UpdateAzDataProtectionBackupVault_Patch + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.UpdateAzDataProtectionBackupVault_Patch Clone() + { + var clone = new UpdateAzDataProtectionBackupVault_Patch(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPatch' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsPatch(VaultName, ResourceGroupName, SubscriptionId, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionBackupVault_Patch() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchExpanded.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchExpanded.cs new file mode 100644 index 000000000000..9798cff8ac29 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchExpanded.cs @@ -0,0 +1,496 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] BackupVaults_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionBackupVault_PatchExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionBackupVault_PatchExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInput(); + + /// Patch Request content for Microsoft.DataProtection resources + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// Backing field for property. + private string _vaultName; + + /// The name of the backup vault. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the backup vault.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the backup vault.", + SerializedName = @"vaultName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string VaultName { get => this._vaultName; set => this._vaultName = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of UpdateAzDataProtectionBackupVault_PatchExpanded + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.UpdateAzDataProtectionBackupVault_PatchExpanded Clone() + { + var clone = new UpdateAzDataProtectionBackupVault_PatchExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + clone.VaultName = this.VaultName; + clone.ResourceGroupName = this.ResourceGroupName; + clone.SubscriptionId = this.SubscriptionId; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPatch' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.BackupVaultsPatch(VaultName, ResourceGroupName, SubscriptionId, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName,ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionBackupVault_PatchExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { VaultName=VaultName, ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentity.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentity.cs new file mode 100644 index 000000000000..2b81e0f79a2e --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentity.cs @@ -0,0 +1,459 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] BackupVaults_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionBackupVault_PatchViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionBackupVault_PatchViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parameter; + + /// Patch Request content for Microsoft.DataProtection resources + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Patch Request content for Microsoft.DataProtection resources", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Patch Request content for Microsoft.DataProtection resources", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// a duplicate instance of UpdateAzDataProtectionBackupVault_PatchViaIdentity + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.UpdateAzDataProtectionBackupVault_PatchViaIdentity Clone() + { + var clone = new UpdateAzDataProtectionBackupVault_PatchViaIdentity(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.Parameter = this.Parameter; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPatch' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsPatchViaIdentity(InputObject.Id, Parameter, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsPatch(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, Parameter, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionBackupVault_PatchViaIdentity() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded.cs new file mode 100644 index 000000000000..a9f49102e85c --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded.cs @@ -0,0 +1,477 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] BackupVaults_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionBackupVault_PatchViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a BackupVault resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// when specified, runs this cmdlet as a PowerShell job + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command as a job")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter AsJob { get; set; } + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// + /// when specified, will make the remote call, and return an AsyncOperationResponse, letting the remote operation continue + /// asynchronously. + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Run the command asynchronously")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter NoWait { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInput(); + + /// Patch Request content for Microsoft.DataProtection resources + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Creates a duplicate instance of this cmdlet (via JSON serialization). + /// + /// a duplicate instance of UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded + /// + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets.UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded Clone() + { + var clone = new UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded(); + clone.__correlationId = this.__correlationId; + clone.__processRecordId = this.__processRecordId; + clone.DefaultProfile = this.DefaultProfile; + clone.InvocationInformation = this.InvocationInformation; + clone.Proxy = this.Proxy; + clone.Pipeline = this.Pipeline; + clone.AsJob = this.AsJob; + clone.Break = this.Break; + clone.ProxyCredential = this.ProxyCredential; + clone.ProxyUseDefaultCredentials = this.ProxyUseDefaultCredentials; + clone.HttpPipelinePrepend = this.HttpPipelinePrepend; + clone.HttpPipelineAppend = this.HttpPipelineAppend; + clone.ParametersBody = this.ParametersBody; + return clone; + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + // When an operation supports asjob, Information messages must go thru verbose. + WriteVerbose($"INFORMATION: {(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.DelayBeforePolling: + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("NoWait")) + { + var data = messageData(); + if (data.ResponseMessage is System.Net.Http.HttpResponseMessage response) + { + var asyncOperation = response.GetFirstHeader(@"Azure-AsyncOperation"); + var location = response.GetFirstHeader(@"Location"); + var uri = global::System.String.IsNullOrEmpty(asyncOperation) ? global::System.String.IsNullOrEmpty(location) ? response.RequestMessage.RequestUri.AbsoluteUri : location : asyncOperation; + WriteObject(new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncOperationResponse { Target = uri }); + // do nothing more. + data.Cancel(); + return; + } + } + break; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'BackupVaultsPatch' operation")) + { + if (true == MyInvocation?.BoundParameters?.ContainsKey("AsJob")) + { + var instance = this.Clone(); + var job = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncJob(instance, this.MyInvocation.Line, this.MyInvocation.MyCommand.Name, this._cancellationTokenSource.Token, this._cancellationTokenSource.Cancel); + JobRepository.Add(job); + var task = instance.ProcessRecordAsync(); + job.Monitor(task); + WriteObject(job); + } + else + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.BackupVaultsPatchViaIdentity(InputObject.Id, ParametersBody, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.VaultName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.VaultName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.BackupVaultsPatch(InputObject.VaultName ?? null, InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, ParametersBody, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionBackupVault_PatchViaIdentityExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IBackupVaultResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_Patch.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_Patch.cs new file mode 100644 index 000000000000..0936620ee122 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_Patch.cs @@ -0,0 +1,414 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionResourceOperationGatekeeper_Patch", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionResourceOperationGatekeeper_Patch : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parameter; + + /// Patch Request content for Microsoft.DataProtection resources + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Patch Request content for Microsoft.DataProtection resources", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Patch Request content for Microsoft.DataProtection resources", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of ResourceOperationGatekeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of ResourceOperationGatekeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of ResourceOperationGatekeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPatch' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersPatch(ResourceGroupName, SubscriptionId, SName, Parameter, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName,body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionResourceOperationGatekeeper_Patch() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded.cs new file mode 100644 index 000000000000..a72c5dab8416 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded.cs @@ -0,0 +1,431 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionResourceOperationGatekeeper_PatchExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInput(); + + /// Patch Request content for Microsoft.DataProtection resources + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Backing field for property. + private string _resourceGroupName; + + /// The name of the resource group where the backup vault is present. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of the resource group where the backup vault is present.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of the resource group where the backup vault is present.", + SerializedName = @"resourceGroupName", + PossibleTypes = new [] { typeof(string) })] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string ResourceGroupName { get => this._resourceGroupName; set => this._resourceGroupName = value; } + + /// Backing field for property. + private string _sName; + + /// The name of ResourceOperationGatekeeper + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The name of ResourceOperationGatekeeper")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The name of ResourceOperationGatekeeper", + SerializedName = @"resourceOperationGateKeepersName", + PossibleTypes = new [] { typeof(string) })] + [global::System.Management.Automation.Alias("ResourceOperationGateKeepersName")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SName { get => this._sName; set => this._sName = value; } + + /// Backing field for property. + private string _subscriptionId; + + /// The subscription Id. + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "The subscription Id.")] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"The subscription Id.", + SerializedName = @"subscriptionId", + PossibleTypes = new [] { typeof(string) })] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.DefaultInfo( + Name = @"", + Description =@"", + Script = @"(Get-AzContext).Subscription.Id")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public string SubscriptionId { get => this._subscriptionId; set => this._subscriptionId = value; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPatch' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await this.Client.ResourceOperationGatekeepersPatch(ResourceGroupName, SubscriptionId, SName, ParametersBody, onOk, onDefault, this, Pipeline); + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName,SubscriptionId=SubscriptionId,SName=SName,body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public UpdateAzDataProtectionResourceOperationGatekeeper_PatchExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { ResourceGroupName=ResourceGroupName, SubscriptionId=SubscriptionId, SName=SName, body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity.cs new file mode 100644 index 000000000000..091d63b0b210 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity.cs @@ -0,0 +1,396 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionResourceOperationGatekeeper_PatchViaIdentity", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parameter; + + /// Patch Request content for Microsoft.DataProtection resources + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Patch Request content for Microsoft.DataProtection resources", ValueFromPipeline = true)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = true, + ReadOnly = false, + Description = @"Patch Request content for Microsoft.DataProtection resources", + SerializedName = @"parameters", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput Parameter { get => this._parameter; set => this._parameter = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPatch' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersPatchViaIdentity(InputObject.Id, Parameter, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceOperationGateKeepersName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceOperationGateKeepersName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersPatch(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.ResourceOperationGateKeepersName ?? null, Parameter, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet + /// class. + /// + public UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentity() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=Parameter }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded.cs b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded.cs new file mode 100644 index 000000000000..dfb996692c30 --- /dev/null +++ b/src/DataProtection/generated/cmdlets/UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded.cs @@ -0,0 +1,412 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Cmdlets +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + /// + /// Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource. + /// + /// + /// [OpenAPI] ResourceOperationGatekeepers_Patch=>PATCH:"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/resourceOperationGateKeepers/{resourceOperationGateKeepersName}" + /// + [global::System.Management.Automation.Cmdlet(global::System.Management.Automation.VerbsData.Update, @"AzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded", SupportsShouldProcess = true)] + [global::System.Management.Automation.OutputType(typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource))] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Description(@"Updates a ResourceOperationGatekeeper resource belonging to a resource group. For example, updating tags for a resource.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Generated] + public partial class UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded : global::System.Management.Automation.PSCmdlet, + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener + { + /// A unique id generatd for the this cmdlet when it is instantiated. + private string __correlationId = System.Guid.NewGuid().ToString(); + + /// A copy of the Invocation Info (necessary to allow asJob to clone this cmdlet) + private global::System.Management.Automation.InvocationInfo __invocationInfo; + + /// A unique id generatd for the this cmdlet when ProcessRecord() is called. + private string __processRecordId; + + /// + /// The for this operation. + /// + private global::System.Threading.CancellationTokenSource _cancellationTokenSource = new global::System.Threading.CancellationTokenSource(); + + /// Wait for .NET debugger to attach + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Wait for .NET debugger to attach")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter Break { get; set; } + + /// The reference to the client API class. + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.DataProtectionClient Client => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.ClientAPI; + + /// + /// The credentials, account, tenant, and subscription used for communication with Azure + /// + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The credentials, account, tenant, and subscription used for communication with Azure.")] + [global::System.Management.Automation.ValidateNotNull] + [global::System.Management.Automation.Alias("AzureRMContext", "AzureCredential")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Azure)] + public global::System.Management.Automation.PSObject DefaultProfile { get; set; } + + /// SendAsync Pipeline Steps to be appended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be appended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelineAppend { get; set; } + + /// SendAsync Pipeline Steps to be prepended to the front of the pipeline + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "SendAsync Pipeline Steps to be prepended to the front of the pipeline")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[] HttpPipelinePrepend { get; set; } + + /// The identityType which can be either SystemAssigned or None + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "The identityType which can be either SystemAssigned or None")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"The identityType which can be either SystemAssigned or None", + SerializedName = @"type", + PossibleTypes = new [] { typeof(string) })] + public string IdentityType { get => ParametersBody.IdentityType ?? null; set => ParametersBody.IdentityType = value; } + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity _inputObject; + + /// Identity Parameter + [global::System.Management.Automation.Parameter(Mandatory = true, HelpMessage = "Identity Parameter", ValueFromPipeline = true)] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Path)] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.IDataProtectionIdentity InputObject { get => this._inputObject; set => this._inputObject = value; } + + /// Accessor for our copy of the InvocationInfo. + public global::System.Management.Automation.InvocationInfo InvocationInformation { get => __invocationInfo = __invocationInfo ?? this.MyInvocation ; set { __invocationInfo = value; } } + + /// + /// cancellation delegate. Stops the cmdlet when called. + /// + global::System.Action Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Cancel => _cancellationTokenSource.Cancel; + + /// cancellation token. + global::System.Threading.CancellationToken Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Token => _cancellationTokenSource.Token; + + /// Backing field for property. + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput _parametersBody= new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.PatchResourceRequestInput(); + + /// Patch Request content for Microsoft.DataProtection resources + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInput ParametersBody { get => this._parametersBody; set => this._parametersBody = value; } + + /// + /// The instance of the that the remote call will use. + /// + private Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.HttpPipeline Pipeline { get; set; } + + /// The URI for the proxy server to use + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "The URI for the proxy server to use")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Uri Proxy { get; set; } + + /// Credentials for a proxy server to use for the remote call + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Credentials for a proxy server to use for the remote call")] + [global::System.Management.Automation.ValidateNotNull] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.PSCredential ProxyCredential { get; set; } + + /// Use the default credentials for the proxy + [global::System.Management.Automation.Parameter(Mandatory = false, DontShow = true, HelpMessage = "Use the default credentials for the proxy")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Runtime)] + public global::System.Management.Automation.SwitchParameter ProxyUseDefaultCredentials { get; set; } + + /// Resource tags. + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ExportAs(typeof(global::System.Collections.Hashtable))] + [global::System.Management.Automation.Parameter(Mandatory = false, HelpMessage = "Resource tags.")] + [global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category(global::Microsoft.Azure.PowerShell.Cmdlets.DataProtection.ParameterCategory.Body)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Info( + Required = false, + ReadOnly = false, + Description = @"Resource tags.", + SerializedName = @"tags", + PossibleTypes = new [] { typeof(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags) })] + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IPatchResourceRequestInputTags Tag { get => ParametersBody.Tag ?? null /* object */; set => ParametersBody.Tag = value; } + + /// + /// overrideOnDefault will be called before the regular onDefault has been processed, allowing customization of what + /// happens on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onDefault method should be processed, or if the method should + /// return immediately (set to true to skip further processing ) + + partial void overrideOnDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// overrideOnOk will be called before the regular onOk has been processed, allowing customization of what happens + /// on that response. Implement this method in a partial class to enable this behavior + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// /// Determines if the rest of the onOk method should be processed, or if the method should return + /// immediately (set to true to skip further processing ) + + partial void overrideOnOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response, ref global::System.Threading.Tasks.Task returnNow); + + /// + /// (overrides the default BeginProcessing method in global::System.Management.Automation.PSCmdlet) + /// + protected override void BeginProcessing() + { + Module.Instance.SetProxyConfiguration(Proxy, ProxyCredential, ProxyUseDefaultCredentials); + if (Break) + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.AttachDebugger.Break(); + } + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeginProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Performs clean-up after the command execution + protected override void EndProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletEndProcessing).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + + /// Handles/Dispatches events during the call to the REST service. + /// The message id + /// The message cancellation token. When this call is cancelled, this should be true + /// Detailed message data for the message event. + /// + /// A that will be complete when handling of the message is completed. + /// + async global::System.Threading.Tasks.Task Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener.Signal(string id, global::System.Threading.CancellationToken token, global::System.Func messageData) + { + using( NoSynchronizationContext ) + { + if (token.IsCancellationRequested) + { + return ; + } + + switch ( id ) + { + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Verbose: + { + WriteVerbose($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Warning: + { + WriteWarning($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Information: + { + var data = messageData(); + WriteInformation(data, new[] { data.Message }); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Debug: + { + WriteDebug($"{(messageData().Message ?? global::System.String.Empty)}"); + return ; + } + case Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.Error: + { + WriteError(new global::System.Management.Automation.ErrorRecord( new global::System.Exception(messageData().Message), string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null ) ); + return ; + } + } + await Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.Signal(id, token, messageData, (i,t,m) => ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(i,t,()=> Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventDataConverter.ConvertFrom( m() ) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.EventData ), InvocationInformation, this.ParameterSetName, __correlationId, __processRecordId, null ); + if (token.IsCancellationRequested) + { + return ; + } + WriteDebug($"{id}: {(messageData().Message ?? global::System.String.Empty)}"); + } + } + + /// Performs execution of the command. + protected override void ProcessRecord() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordStart).Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + __processRecordId = System.Guid.NewGuid().ToString(); + try + { + // work + if (ShouldProcess($"Call remote 'ResourceOperationGatekeepersPatch' operation")) + { + using( var asyncCommandRuntime = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.AsyncCommandRuntime(this, ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token) ) + { + asyncCommandRuntime.Wait( ProcessRecordAsync(),((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token); + } + } + } + catch (global::System.AggregateException aggregateException) + { + // unroll the inner exceptions to get the root cause + foreach( var innerException in aggregateException.Flatten().InnerExceptions ) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{innerException.GetType().Name} - {innerException.Message} : {innerException.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(innerException,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + } + catch (global::System.Exception exception) when ((exception as System.Management.Automation.PipelineStoppedException)== null || (exception as System.Management.Automation.PipelineStoppedException).InnerException != null) + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletException, $"{exception.GetType().Name} - {exception.Message} : {exception.StackTrace}").Wait(); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + // Write exception out to error channel. + WriteError( new global::System.Management.Automation.ErrorRecord(exception,string.Empty, global::System.Management.Automation.ErrorCategory.NotSpecified, null) ); + } + finally + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordEnd).Wait(); + } + } + + /// Performs execution of the command, working asynchronously if required. + /// + /// A that will be complete when handling of the method is completed. + /// + protected async global::System.Threading.Tasks.Task ProcessRecordAsync() + { + using( NoSynchronizationContext ) + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncStart); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletGetPipeline); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + Pipeline = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module.Instance.CreatePipeline(InvocationInformation, __correlationId, __processRecordId, this.ParameterSetName); + if (null != HttpPipelinePrepend) + { + Pipeline.Prepend((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelinePrepend) ?? HttpPipelinePrepend); + } + if (null != HttpPipelineAppend) + { + Pipeline.Append((this.CommandRuntime as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.IAsyncCommandRuntimeExtensions)?.Wrap(HttpPipelineAppend) ?? HttpPipelineAppend); + } + // get the client instance + try + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletBeforeAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + if (InputObject?.Id != null) + { + await this.Client.ResourceOperationGatekeepersPatchViaIdentity(InputObject.Id, ParametersBody, onOk, onDefault, this, Pipeline); + } + else + { + // try to call with PATH parameters from Input Object + if (null == InputObject.ResourceGroupName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceGroupName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.SubscriptionId) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.SubscriptionId"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + if (null == InputObject.ResourceOperationGateKeepersName) + { + ThrowTerminatingError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception("InputObject has null value for InputObject.ResourceOperationGateKeepersName"),string.Empty, global::System.Management.Automation.ErrorCategory.InvalidArgument, InputObject) ); + } + await this.Client.ResourceOperationGatekeepersPatch(InputObject.ResourceGroupName ?? null, InputObject.SubscriptionId ?? null, InputObject.ResourceOperationGateKeepersName ?? null, ParametersBody, onOk, onDefault, this, Pipeline); + } + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletAfterAPICall); if( ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Token.IsCancellationRequested ) { return; } + } + catch (Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.UndeclaredResponseException urexception) + { + WriteError(new global::System.Management.Automation.ErrorRecord(urexception, urexception.StatusCode.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody}) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(urexception.Message) { RecommendedAction = urexception.Action } + }); + } + finally + { + await ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.CmdletProcessRecordAsyncEnd); + } + } + } + + /// Interrupts currently running code within the command. + protected override void StopProcessing() + { + ((Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener)this).Cancel(); + base.StopProcessing(); + } + + /// + /// Intializes a new instance of the cmdlet class. + /// + public UpdateAzDataProtectionResourceOperationGatekeeper_PatchViaIdentityExpanded() + { + + } + + /// + /// a delegate that is called when the remote service returns default (any response code not handled elsewhere). + /// + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onDefault(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnDefault(responseMessage, response, ref _returnNow); + // if overrideOnDefault has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // Error Response : default + var code = (await response)?.Code; + var message = (await response)?.Message; + if ((null == code || null == message)) + { + // Unrecognized Response. Create an error record based on what we have. + var ex = new Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.RestException(responseMessage, await response); + WriteError( new global::System.Management.Automation.ErrorRecord(ex, ex.Code, global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(ex.Message) { RecommendedAction = ex.Action } + }); + } + else + { + WriteError( new global::System.Management.Automation.ErrorRecord(new global::System.Exception($"[{code}] : {message}"), code?.ToString(), global::System.Management.Automation.ErrorCategory.InvalidOperation, new { body=ParametersBody }) + { + ErrorDetails = new global::System.Management.Automation.ErrorDetails(message) { RecommendedAction = global::System.String.Empty } + }); + } + } + } + + /// a delegate that is called when the remote service returns 200 (OK). + /// the raw response message as an global::System.Net.Http.HttpResponseMessage. + /// the body result as a from the remote call + /// + /// A that will be complete when handling of the method is completed. + /// + private async global::System.Threading.Tasks.Task onOk(global::System.Net.Http.HttpResponseMessage responseMessage, global::System.Threading.Tasks.Task response) + { + using( NoSynchronizationContext ) + { + var _returnNow = global::System.Threading.Tasks.Task.FromResult(false); + overrideOnOk(responseMessage, response, ref _returnNow); + // if overrideOnOk has returned true, then return right away. + if ((null != _returnNow && await _returnNow)) + { + return ; + } + // onOk - response for 200 / application/json + // (await response) // should be Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IResourceOperationGateKeeperResource + WriteObject((await response)); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.format.ps1xml b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.format.ps1xml new file mode 100644 index 000000000000..23bd02cb15f0 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.format.ps1xml @@ -0,0 +1,368 @@ + + + + + AzureErrorRecords + + Microsoft.Azure.Commands.Profile.Errors.AzureErrorRecord + Microsoft.Azure.Commands.Profile.Errors.AzureExceptionRecord + Microsoft.Azure.Commands.Profile.Errors.AzureRestExceptionRecord + + + + + + Microsoft.Azure.Commands.Profile.Errors.AzureRestExceptionRecord + + AzureErrorRecords + + + $_.InvocationInfo.HistoryId + + + + + + + + ErrorCategory + + + ErrorDetail + + + + "{" + $_.InvocationInfo.MyCommand + "}" + + + + $_.InvocationInfo.Line + + + + $_.InvocationInfo.PositionMessage + + + + $_.InvocationInfo.BoundParameters + + + + $_.InvocationInfo.UnboundParameters + + + + $_.InvocationInfo.HistoryId + + + + + + + AzureErrorRecords + $_.GetType() -eq [Microsoft.Azure.Commands.Profile.Errors.AzureRestExceptionRecord] + + + + + RequestId + + + Message + + + ServerMessage + + + ServerResponse + + + RequestMessage + + + + "{" + $_.InvocationInfo.MyCommand + "}" + + + + $_.InvocationInfo.Line + + + + $_.InvocationInfo.PositionMessage + + + StackTrace + + + + $_.InvocationInfo.HistoryId + + + + + + + AzureErrorRecords + $_.GetType() -eq [Microsoft.Azure.Commands.Profile.Errors.AzureExceptionRecord] + + + + + Message + + + StackTrace + + + + $_.Exception.GetType() + + + + "{" + $_.InvocationInfo.MyCommand + "}" + + + + $_.InvocationInfo.Line + + + + $_.InvocationInfo.PositionMessage + + + + $_.InvocationInfo.HistoryId + + + + + + + + Microsoft.Azure.Commands.Profile.CommonModule.PSAzureServiceProfile + + Microsoft.Azure.Commands.Profile.CommonModule.PSAzureServiceProfile + + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + Description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.generated.format.ps1xml b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.generated.format.ps1xml new file mode 100644 index 000000000000..33077baf469d --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.generated.format.ps1xml @@ -0,0 +1,422 @@ + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + + + + Left + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + ResourceManagerUrl + + + Left + ActiveDirectoryAuthority + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + Id + + + Left + TenantId + + + Left + State + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + + Left + $_.Context.Account.ToString() + + + Left + $_.Context.Subscription.Name + + + Left + $_.Context.Tenant.ToString() + + + Left + $_.Context.Environment.ToString() + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + 40 + Left + + + + Left + + + + Left + + + + Left + + + + Left + + + + + + + + Left + Name + + + Left + Account + + + Left + $_.Subscription.Name + + + Left + Environment + + + Left + $_.Tenant.ToString() + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + + + + Left + + + + Left + + + + + + + + Left + Id + + + Left + Directory + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.types.ps1xml b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.types.ps1xml new file mode 100644 index 000000000000..019773629f12 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Accounts.types.ps1xml @@ -0,0 +1,281 @@ + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + + PSStandardMembers + + + SerializationDepth + 10 + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + PSStandardMembers + + + SerializationDepth + 10 + + + + + + + Microsoft.Azure.Commands.Common.Authentication.Core.AuthenticationStoreTokenCache + + + PSStandardMembers + + + SerializationMethod + SpecificProperties + + + PropertySerializationSet + + CacheData + + + + + + + + Microsoft.Azure.Commands.Common.Authentication.Core.ProtectedFileTokenCache + + + PSStandardMembers + + + SerializationMethod + SpecificProperties + + + PropertySerializationSet + + CacheData + + + + + + + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + PSStandardMembers + + + SerializationDepth + 10 + + + + + + Microsoft.Azure.Commands.Profile.Models.AzureContextConverter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.nuspec b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.nuspec new file mode 100644 index 000000000000..2ae40fc04d57 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.nuspec @@ -0,0 +1,18 @@ + + + + Az.Accounts + 1.8.1 + Microsoft Corporation + Microsoft Corporation + true + https://aka.ms/azps-license + https://github.com/Azure/azure-powershell + Microsoft Azure PowerShell - Accounts credential management cmdlets for Azure Resource Manager in Windows PowerShell and PowerShell Core. + +For more information on account credential management, please visit the following: https://docs.microsoft.com/powershell/azure/authenticate-azureps + * Fixed an issue that may cause Az to skip logs in Azure Automation or PowerShell jobs [#11492] + Microsoft Corporation. All rights reserved. + Azure ResourceManager ARM Accounts Authentication Environment Subscription PSModule PSIncludes_Cmdlet PSCmdlet_Disable-AzDataCollection PSCmdlet_Disable-AzContextAutosave PSCmdlet_Enable-AzDataCollection PSCmdlet_Enable-AzContextAutosave PSCmdlet_Remove-AzEnvironment PSCmdlet_Get-AzEnvironment PSCmdlet_Set-AzEnvironment PSCmdlet_Add-AzEnvironment PSCmdlet_Get-AzSubscription PSCmdlet_Connect-AzAccount PSCmdlet_Get-AzContext PSCmdlet_Set-AzContext PSCmdlet_Import-AzContext PSCmdlet_Save-AzContext PSCmdlet_Get-AzTenant PSCmdlet_Send-Feedback PSCmdlet_Resolve-AzError PSCmdlet_Select-AzContext PSCmdlet_Rename-AzContext PSCmdlet_Remove-AzContext PSCmdlet_Clear-AzContext PSCmdlet_Disconnect-AzAccount PSCmdlet_Get-AzContextAutosaveSetting PSCmdlet_Set-AzDefault PSCmdlet_Get-AzDefault PSCmdlet_Clear-AzDefault PSCmdlet_Register-AzModule PSCmdlet_Enable-AzureRmAlias PSCmdlet_Disable-AzureRmAlias PSCmdlet_Uninstall-AzureRm PSCmdlet_Get-AzProfile PSCmdlet_Select-AzProfile PSCommand_Disable-AzDataCollection PSCommand_Disable-AzContextAutosave PSCommand_Enable-AzDataCollection PSCommand_Enable-AzContextAutosave PSCommand_Remove-AzEnvironment PSCommand_Get-AzEnvironment PSCommand_Set-AzEnvironment PSCommand_Add-AzEnvironment PSCommand_Get-AzSubscription PSCommand_Connect-AzAccount PSCommand_Get-AzContext PSCommand_Set-AzContext PSCommand_Import-AzContext PSCommand_Save-AzContext PSCommand_Get-AzTenant PSCommand_Send-Feedback PSCommand_Resolve-AzError PSCommand_Select-AzContext PSCommand_Rename-AzContext PSCommand_Remove-AzContext PSCommand_Clear-AzContext PSCommand_Disconnect-AzAccount PSCommand_Get-AzContextAutosaveSetting PSCommand_Set-AzDefault PSCommand_Get-AzDefault PSCommand_Clear-AzDefault PSCommand_Register-AzModule PSCommand_Enable-AzureRmAlias PSCommand_Disable-AzureRmAlias PSCommand_Uninstall-AzureRm PSCommand_Get-AzProfile PSCommand_Select-AzProfile PSCommand_Add-AzAccount PSCommand_Login-AzAccount PSCommand_Remove-AzAccount PSCommand_Logout-AzAccount PSCommand_Select-AzSubscription PSCommand_Resolve-Error PSCommand_Save-AzProfile PSCommand_Get-AzDomain + + \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psd1 b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psd1 new file mode 100644 index 000000000000..c7bbc649a383 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psd1 @@ -0,0 +1,360 @@ +# +# Module manifest for module 'Az.Accounts' +# +# Generated by: Microsoft Corporation +# +# Generated on: 5/28/2020 +# + +@{ + +# Script module or binary module file associated with this manifest. +RootModule = 'Az.Accounts.psm1' + +# Version number of this module. +ModuleVersion = '1.8.1' + +# Supported PSEditions +CompatiblePSEditions = 'Core', 'Desktop' + +# ID used to uniquely identify this module +GUID = '17a2feff-488b-47f9-8729-e2cec094624c' + +# Author of this module +Author = 'Microsoft Corporation' + +# Company or vendor of this module +CompanyName = 'Microsoft Corporation' + +# Copyright statement for this module +Copyright = 'Microsoft Corporation. All rights reserved.' + +# Description of the functionality provided by this module +Description = 'Microsoft Azure PowerShell - Accounts credential management cmdlets for Azure Resource Manager in Windows PowerShell and PowerShell Core. + +For more information on account credential management, please visit the following: https://docs.microsoft.com/powershell/azure/authenticate-azureps' + +# Minimum version of the PowerShell engine required by this module +PowerShellVersion = '5.1' + +# Name of the PowerShell host required by this module +# PowerShellHostName = '' + +# Minimum version of the PowerShell host required by this module +# PowerShellHostVersion = '' + +# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +DotNetFrameworkVersion = '4.7.2' + +# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. +# CLRVersion = '' + +# Processor architecture (None, X86, Amd64) required by this module +# ProcessorArchitecture = '' + +# Modules that must be imported into the global environment prior to importing this module +# RequiredModules = @() + +# Assemblies that must be loaded prior to importing this module +RequiredAssemblies = 'Microsoft.Azure.PowerShell.Authentication.Abstractions.dll', + 'Microsoft.Azure.PowerShell.Authentication.dll', + 'Microsoft.Azure.PowerShell.Authentication.ResourceManager.dll', + 'Microsoft.Azure.PowerShell.Clients.Authorization.dll', + 'Microsoft.Azure.PowerShell.Clients.Compute.dll', + 'Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll', + 'Microsoft.Azure.PowerShell.Clients.Monitor.dll', + 'Microsoft.Azure.PowerShell.Clients.Network.dll', + 'Microsoft.Azure.PowerShell.Clients.PolicyInsights.dll', + 'Microsoft.Azure.PowerShell.Clients.ResourceManager.dll', + 'Microsoft.Azure.PowerShell.Common.dll', + 'Microsoft.Azure.PowerShell.Storage.dll', + 'Microsoft.Azure.PowerShell.Clients.Storage.Management.dll', + 'Microsoft.Azure.PowerShell.Clients.KeyVault.dll', + 'Microsoft.Azure.PowerShell.Clients.Websites.dll', + 'Hyak.Common.dll', 'Microsoft.ApplicationInsights.dll', + 'Microsoft.Azure.Common.dll', 'Microsoft.Rest.ClientRuntime.dll', + 'Microsoft.Rest.ClientRuntime.Azure.dll', + 'Microsoft.WindowsAzure.Storage.dll', + 'Microsoft.WindowsAzure.Storage.DataMovement.dll', + 'Microsoft.Azure.PowerShell.Clients.Aks.dll', + 'Microsoft.Azure.PowerShell.Strategies.dll' + +# Script files (.ps1) that are run in the caller's environment prior to importing this module. +# ScriptsToProcess = @() + +# Type files (.ps1xml) to be loaded when importing this module +# TypesToProcess = @() + +# Format files (.ps1xml) to be loaded when importing this module +FormatsToProcess = 'Accounts.format.ps1xml', 'Accounts.generated.format.ps1xml' + +# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess +NestedModules = @() + +# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. +FunctionsToExport = @() + +# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. +CmdletsToExport = 'Disable-AzDataCollection', 'Disable-AzContextAutosave', + 'Enable-AzDataCollection', 'Enable-AzContextAutosave', + 'Remove-AzEnvironment', 'Get-AzEnvironment', 'Set-AzEnvironment', + 'Add-AzEnvironment', 'Get-AzSubscription', 'Connect-AzAccount', + 'Get-AzContext', 'Set-AzContext', 'Import-AzContext', 'Save-AzContext', + 'Get-AzTenant', 'Send-Feedback', 'Resolve-AzError', 'Select-AzContext', + 'Rename-AzContext', 'Remove-AzContext', 'Clear-AzContext', + 'Disconnect-AzAccount', 'Get-AzContextAutosaveSetting', + 'Set-AzDefault', 'Get-AzDefault', 'Clear-AzDefault', + 'Register-AzModule', 'Enable-AzureRmAlias', 'Disable-AzureRmAlias', + 'Uninstall-AzureRm', 'Get-AzProfile', 'Select-AzProfile' + +# Variables to export from this module +# VariablesToExport = @() + +# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. +AliasesToExport = 'Add-AzAccount', 'Login-AzAccount', 'Remove-AzAccount', + 'Logout-AzAccount', 'Select-AzSubscription', 'Resolve-Error', + 'Save-AzProfile', 'Get-AzDomain' + +# DSC resources to export from this module +# DscResourcesToExport = @() + +# List of all modules packaged with this module +# ModuleList = @() + +# List of all files packaged with this module +# FileList = @() + +# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. +PrivateData = @{ + + PSData = @{ + + # Tags applied to this module. These help with module discovery in online galleries. + Tags = 'Azure','ResourceManager','ARM','Accounts','Authentication','Environment','Subscription' + + # A URL to the license for this module. + LicenseUri = 'https://aka.ms/azps-license' + + # A URL to the main website for this project. + ProjectUri = 'https://github.com/Azure/azure-powershell' + + # A URL to an icon representing this module. + # IconUri = '' + + # ReleaseNotes of this module + ReleaseNotes = '* Fixed an issue that may cause Az to skip logs in Azure Automation or PowerShell jobs [#11492]' + + # Prerelease string of this module + # Prerelease = '' + + # Flag to indicate whether the module requires explicit user acceptance for install/update/save + # RequireLicenseAcceptance = $false + + # External dependent modules of this module + # ExternalModuleDependencies = @() + + } # End of PSData hashtable + + } # End of PrivateData hashtable + +# HelpInfo URI of this module +# HelpInfoURI = '' + +# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. +# DefaultCommandPrefix = '' + +} + + +# SIG # Begin signature block +# MIIjjwYJKoZIhvcNAQcCoIIjgDCCI3wCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDuurAhAAKv07yX +# tNSM61tReUSrZGbTrOcsz0tXs7L536CCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZDCCFWACAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQg0bWN4ISJ +# vps5kSf9K7psHiLoBv3Thd3OEZWVHm/B8TswQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQCwJXsIokZyVWJoO/Jh5A5x1W9w60dDYdpn2v0u4b7S +# zlY7ugBjbcA7iF+72h9IKZ8Ug/XWMYCXplpm0cHE4F35DjcG8Kr/Vx87gfiQZ0X4 +# heyLsEI6fme6cRy4I0x1BRBZ5uBwPZ5Qi7A1azcPkBGwgyctLDhLkXUfrj8/zC5O +# d5Ya/R5HUc+mN88k10xeyBYEpFUqCONCCxLupfxLdlDRt9uDCvhqWE9ZBG1Nzx02 +# jiH273phDWlldG5hdaX0fLUXAKc7tQDaxF6acBypBQBEm2RXTSHHu8Onw2vuBcM8 +# ad/Im2850FVnHifJ/TebUaU+8jHAmZW7vSGpRwQtyz0aoYIS7jCCEuoGCisGAQQB +# gjcDAwExghLaMIIS1gYJKoZIhvcNAQcCoIISxzCCEsMCAQMxDzANBglghkgBZQME +# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEICXbtKNkQQuFRTKC/cY72F6h+DxZ0iCVXPTWEuBS +# ixdGAgZepuS2yXQYEzIwMjAwNTI4MDcyNTU1LjE2OVowBIACAfSggdSkgdEwgc4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p +# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg +# VFNTIEVTTjpGN0E2LUUyNTEtMTUwQTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgU2VydmljZaCCDkEwggT1MIID3aADAgECAhMzAAABJYvei2xyJjHdAAAA +# AAElMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# MB4XDTE5MTIxOTAxMTQ1OFoXDTIxMDMxNzAxMTQ1OFowgc4xCzAJBgNVBAYTAlVT +# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy +# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpGN0E2 +# LUUyNTEtMTUwQTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANB7H2N2YFvs4cnBJiYx +# Sitk3ABy/xXLfpOUm7NxXHsb6UWq3bONY4yVI4ySbVegC4nxVnlKEF50ANcMYMrE +# c1mEu7cRbzHmi38g6TqLMtOUAW28hc6DNez8do4zvZccrKQxkcB0v9+lm0BIzk9q +# Waxdfg6XyVeSb2NHnkrnoLur36ENT7a2MYdoTVlaVpuU1RcGFpmC0IkJ3rRTJm+A +# jv+43Nxp+PT9XDZtqK32cMBV3bjK39cJmcdjfJftmweMi4emyX4+kNdqLUPB72nS +# vIJmyX1I4wd7G0gd72qVNu1Zgnxa1Yugf10QxDFUueY88M5WYGPstmFKOLfw31Wn +# P8UCAwEAAaOCARswggEXMB0GA1UdDgQWBBTzqsrlByb5ATk0FcYI8iIIF0Mk+DAf +# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH +# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU +# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF +# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 +# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQCTHFk8YSAiACGypk1NmTnxXW9CInmN +# rbEeXlOoYDofCPlKKguDcVIuJOYZX4G0WWlhS2Sd4HiOtmy42ky19tMx0bun/EDI +# hW3C9edNeoqUIPVP0tyv3ilV53McYnMvVNg1DJkkGi4J/OSCTNxw64U595Y9+cxO +# IjlQFbk52ajIc9BYNIYehuhbV1Mqpd4m25UNNhsdMqzjON8IEwWObKVG7nZmmLP7 +# 0wF5GPiIB6i7QX/fG8jN6mggqBRYJn2aZWJYSRXAK1MZtXx4rvcp4QTS18xT9hjZ +# SagY9zxjBu6sMR96V6Atb5geR+twYAaV+0Kaq0504t6CEugbRRvH8HuxMIIGcTCC +# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv +# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN +# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw +# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 +# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw +# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe +# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx +# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G +# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA +# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 +# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC +# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX +# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v +# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI +# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g +# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 +# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB +# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA +# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh +# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS +# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK +# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon +# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi +# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ +# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII +# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 +# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a +# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ +# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ +# NR4Iuto229Nfj950iEkSoYICzzCCAjgCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT +# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD +# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP +# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpG +# N0E2LUUyNTEtMTUwQTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy +# dmljZaIjCgEBMAcGBSsOAwIaAxUARdMv4VBtzYb7cxde8hEpWvahcKeggYMwgYCk +# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD +# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF +# AOJ5mEcwIhgPMjAyMDA1MjgwNTU0MTVaGA8yMDIwMDUyOTA1NTQxNVowdDA6Bgor +# BgEEAYRZCgQBMSwwKjAKAgUA4nmYRwIBADAHAgEAAgIQaTAHAgEAAgIR2zAKAgUA +# 4nrpxwIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAID +# B6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAHSCuUKIja9Clnf/S578 +# vI9iyR2zx4t4KTE8Oc1a4hK7szarn0tHKrWDZ9eCGo1xziv73RzUH6uQxWT9c+ni +# paMbwPfe+nnleZBpLYEZnWsKITEBaOozaKV4p75+m0+ZWnCWsCCEZUsVrCI4Mufl +# fCQzViL04ZiX24Q/YEGp6BtYMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMx +# EzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoT +# FU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgUENBIDIwMTACEzMAAAEli96LbHImMd0AAAAAASUwDQYJYIZIAWUDBAIB +# BQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQx +# IgQgnhg9UziffkIa501CNaIfYHD9t0ZymAWV6kze+W5WmsQwgfoGCyqGSIb3DQEJ +# EAIvMYHqMIHnMIHkMIG9BCBd38ayLm8wX/qJfYIOH5V+YvlG+poWQXCW6LKN70H3 +# DjCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAw +# DgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x +# JjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABJYve +# i2xyJjHdAAAAAAElMCIEIOE7tRdqMTLKlfH4tn6vc8stJmZ790PkjFTsb858jugw +# MA0GCSqGSIb3DQEBCwUABIIBAGpK5oraWz2zXT/4EhnqmSwlnmtyxs6GgoerJrc/ +# VUaCkwPJvHAdNocuEUFFzkPIr9JCLoHLhr7Qru7JvLM7myHm+536WdLNyEXB3U2n +# ASGU9QOUgvH+PFcWLskBYC4fstF0L2WR+hlX5+9rIJwWhk1cItSxRySa7+YvthDR +# HrtCWlivm+bwqPobxS3062wgiGm0pWllw5WBJipqMM7KNOxIMWbPk15uPkn4Osuq +# 0m84MeY6640BxWDokxm+MxUWTCLMxxKOursQRH3z8H6IEvdTjRuvQvXcwJDL8evv +# LslVpDno2+WliluRTrzyX/bgpHHiY3PFM2kMssHL/J4Gt08= +# SIG # End signature block diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psm1 b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psm1 new file mode 100644 index 000000000000..994af339fcb3 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Az.Accounts.psm1 @@ -0,0 +1,339 @@ +# +# Script module for module 'Az.Accounts' that is executed when 'Az.Accounts' is imported in a PowerShell session. +# +# Generated by: Microsoft Corporation +# +# Generated on: 05/28/2020 06:50:01 +# + +$PSDefaultParameterValues.Clear() +Set-StrictMode -Version Latest + +function Test-DotNet +{ + try + { + if ((Get-PSDrive 'HKLM' -ErrorAction Ignore) -and (-not (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' -ErrorAction Stop | Get-ItemPropertyValue -ErrorAction Stop -Name Release | Where-Object { $_ -ge 461808 }))) + { + throw ".NET Framework versions lower than 4.7.2 are not supported in Az. Please upgrade to .NET Framework 4.7.2 or higher." + } + } + catch [System.Management.Automation.DriveNotFoundException] + { + Write-Verbose ".NET Framework version check failed." + } +} + +if ($true -and ($PSEdition -eq 'Desktop')) +{ + if ($PSVersionTable.PSVersion -lt [Version]'5.1') + { + throw "PowerShell versions lower than 5.1 are not supported in Az. Please upgrade to PowerShell 5.1 or higher." + } + + Test-DotNet +} + +if ($true -and ($PSEdition -eq 'Core')) +{ + if ($PSVersionTable.PSVersion -lt [Version]'6.2.4') + { + throw "Current Az version doesn't support PowerShell Core versions lower than 6.2.4. Please upgrade to PowerShell Core 6.2.4 or higher." + } +} + +if (Test-Path -Path "$PSScriptRoot\StartupScripts" -ErrorAction Ignore) +{ + Get-ChildItem "$PSScriptRoot\StartupScripts" -ErrorAction Stop | ForEach-Object { + . $_.FullName + } +} + +if (Get-Module AzureRM.profile -ErrorAction Ignore) +{ + Write-Warning ("AzureRM.Profile already loaded. Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook. If you are running PowerShell in an environment you control you can use the 'Uninstall-AzureRm' cmdlet to remove all AzureRm modules from your machine. " + + "If you are running in Azure Automation, take care that none of your runbooks import both Az and AzureRM modules. More information can be found here: https://aka.ms/azps-migration-guide.") + throw ("AzureRM.Profile already loaded. Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook. If you are running PowerShell in an environment you control you can use the 'Uninstall-AzureRm' cmdlet to remove all AzureRm modules from your machine. " + + "If you are running in Azure Automation, take care that none of your runbooks import both Az and AzureRM modules. More information can be found here: https://aka.ms/azps-migration-guide.") +} + +$preloadPath = (Join-Path $PSScriptRoot -ChildPath "PreloadAssemblies") +if($PSEdition -eq 'Desktop' -and (Test-Path $preloadPath -ErrorAction Ignore)) +{ + try + { + Get-ChildItem -ErrorAction Stop -Path $preloadPath -Filter "*.dll" | ForEach-Object { + try + { + Add-Type -Path $_.FullName -ErrorAction Ignore | Out-Null + } + catch { + Write-Verbose $_ + } + } + } + catch {} +} + +$netCorePath = (Join-Path $PSScriptRoot -ChildPath "NetCoreAssemblies") +if($PSEdition -eq 'Core' -and (Test-Path $netCorePath -ErrorAction Ignore)) +{ + try + { + $loadedAssemblies = ([System.AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object {New-Object -TypeName System.Reflection.AssemblyName -ArgumentList $_.FullName} ) + Get-ChildItem -ErrorAction Stop -Path $netCorePath -Filter "*.dll" | ForEach-Object { + $assemblyName = ([System.Reflection.AssemblyName]::GetAssemblyName($_.FullName)) + $matches = ($loadedAssemblies | Where-Object {$_.Name -eq $assemblyName.Name}) + if (-not $matches) + { + try + { + Add-Type -Path $_.FullName -ErrorAction Ignore | Out-Null + } + catch { + Write-Verbose $_ + } + } + } + } + catch {} +} + + +Import-Module (Join-Path -Path $PSScriptRoot -ChildPath Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll) + + +if (Test-Path -Path "$PSScriptRoot\PostImportScripts" -ErrorAction Ignore) +{ + Get-ChildItem "$PSScriptRoot\PostImportScripts" -ErrorAction Stop | ForEach-Object { + . $_.FullName + } +} + +$FilteredCommands = @() + +if ($Env:ACC_CLOUD -eq $null) +{ + $FilteredCommands | ForEach-Object { + + $existingDefault = $false + foreach ($key in $global:PSDefaultParameterValues.Keys) + { + if ($_ -like "$key") + { + $existingDefault = $true + } + } + + if (!$existingDefault) + { + $global:PSDefaultParameterValues.Add($_, + { + if ((Get-Command Get-AzContext -ErrorAction Ignore) -eq $null) + { + $context = Get-AzureRmContext + } + else + { + $context = Get-AzContext + } + if (($context -ne $null) -and $context.ExtendedProperties.ContainsKey("Default Resource Group")) { + $context.ExtendedProperties["Default Resource Group"] + } + }) + } + } +} + +# SIG # Begin signature block +# MIIjkgYJKoZIhvcNAQcCoIIjgzCCI38CAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAOvvTds8RMroSM +# 4jK/KyvMyRtBp0iXYFrUmBz7UipKR6CCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVZzCCFWMCAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgSAuohsCY +# 1WvrvFLuGrpt391tmwt+DwhUHagVMNjTnc8wQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQC89iy3NBWqZwCUaYz9XoaWyi+tTrpqb9+KYQaMxL1n +# 7H+h7RImGRiyznWchO8G37mvbG6RrWxH0IY1u14s3qRqGdoD01GoAOtTMVf8Nmf5 +# LCT1xD5B2W+kVY/lWnF2FKNvB5w6qB05eMLyt4d4ORMjLBrh1cz2BonkY5xd3/MT +# MHiwKmnJD3esZHlV0HVzTXKu10lQr3BKGIICX3tUMY1nZI2T7ENcxz3k1GQer+Gm +# K8edSssSn0lLZS1qyxx2ainSqFx6W5I9tpB5QPqRGs9ObHanV4PfyXVIJ1fvjrKN +# ubmxC3Ev1t08dLInjHyVisq5IvumU3MhM1WenSnEv0E0oYIS8TCCEu0GCisGAQQB +# gjcDAwExghLdMIIS2QYJKoZIhvcNAQcCoIISyjCCEsYCAQMxDzANBglghkgBZQME +# AgEFADCCAVUGCyqGSIb3DQEJEAEEoIIBRASCAUAwggE8AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEICNGSHQ9aQGoYVLoatBgJT7hrcZ0kz7R5r99heVm +# n9eHAgZepuaL2lgYEzIwMjAwNTI4MDcxMTI2LjQ3MlowBIACAfSggdSkgdEwgc4x +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1p +# Y3Jvc29mdCBPcGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMg +# VFNTIEVTTjowQTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUt +# U3RhbXAgU2VydmljZaCCDkQwggT1MIID3aADAgECAhMzAAABJy9uo++RqBmoAAAA +# AAEnMA0GCSqGSIb3DQEBCwUAMHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo +# aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y +# cG9yYXRpb24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEw +# MB4XDTE5MTIxOTAxMTQ1OVoXDTIxMDMxNzAxMTQ1OVowgc4xCzAJBgNVBAYTAlVT +# MRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK +# ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVy +# YXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjowQTU2 +# LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vydmlj +# ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPgB3nERnk6fS40vvWeD +# 3HCgM9Ep4xTIQiPnJXE9E+HkZVtTsPemoOyhfNAyF95E/rUvXOVTUcJFL7Xb16jT +# KPXONsCWY8DCixSDIiid6xa30TiEWVcIZRwiDlcx29D467OTav5rA1G6TwAEY5rQ +# jhUHLrOoJgfJfakZq6IHjd+slI0/qlys7QIGakFk2OB6mh/ln/nS8G4kNRK6Do4g +# xDtnBSFLNfhsSZlRSMDJwFvrZ2FCkaoexd7rKlUNOAAScY411IEqQeI1PwfRm3aW +# bS8IvAfJPC2Ah2LrtP8sKn5faaU8epexje7vZfcZif/cbxgUKStJzqbdvTBNc93n +# /Z8CAwEAAaOCARswggEXMB0GA1UdDgQWBBTl9JZVgF85MSRbYlOJXbhY022V8jAf +# BgNVHSMEGDAWgBTVYzpcijGQ80N7fEYbxTNoWoVtVTBWBgNVHR8ETzBNMEugSaBH +# hkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2NybC9wcm9kdWN0cy9NaWNU +# aW1TdGFQQ0FfMjAxMC0wNy0wMS5jcmwwWgYIKwYBBQUHAQEETjBMMEoGCCsGAQUF +# BzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1RpbVN0 +# YVBDQV8yMDEwLTA3LTAxLmNydDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsG +# AQUFBwMIMA0GCSqGSIb3DQEBCwUAA4IBAQAKyo180VXHBqVnjZwQy7NlzXbo2+W5 +# qfHxR7ANV5RBkRkdGamkwUcDNL+DpHObFPJHa0oTeYKE0Zbl1MvvfS8RtGGdhGYG +# CJf+BPd/gBCs4+dkZdjvOzNyuVuDPGlqQ5f7HS7iuQ/cCyGHcHYJ0nXVewF2Lk+J +# lrWykHpTlLwPXmCpNR+gieItPi/UMF2RYTGwojW+yIVwNyMYnjFGUxEX5/DtJjRZ +# mg7PBHMrENN2DgO6wBelp4ptyH2KK2EsWT+8jFCuoKv+eJby0QD55LN5f8SrUPRn +# K86fh7aVOfCglQofo5ABZIGiDIrg4JsV4k6p0oBSIFOAcqRAhiH+1spCMIIGcTCC +# BFmgAwIBAgIKYQmBKgAAAAAAAjANBgkqhkiG9w0BAQsFADCBiDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWljcm9zb2Z0IFJv +# b3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTAwHhcNMTAwNzAxMjEzNjU1WhcN +# MjUwNzAxMjE0NjU1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv +# bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 +# aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCCASIw +# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKkdDbx3EYo6IOz8E5f1+n9plGt0 +# VBDVpQoAgoX77XxoSyxfxcPlYcJ2tz5mK1vwFVMnBDEfQRsalR3OCROOfGEwWbEw +# RA/xYIiEVEMM1024OAizQt2TrNZzMFcmgqNFDdDq9UeBzb8kYDJYYEbyWEeGMoQe +# dGFnkV+BVLHPk0ySwcSmXdFhE24oxhr5hoC732H8RsEnHSRnEnIaIYqvS2SJUGKx +# Xf13Hz3wV3WsvYpCTUBR0Q+cBj5nf/VmwAOWRH7v0Ev9buWayrGo8noqCjHw2k4G +# kbaICDXoeByw6ZnNPOcvRLqn9NxkvaQBwSAJk3jN/LzAyURdXhacAQVPIk0CAwEA +# AaOCAeYwggHiMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1UdDgQWBBTVYzpcijGQ80N7 +# fEYbxTNoWoVtVTAZBgkrBgEEAYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMC +# AYYwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBTV9lbLj+iiXGJo0T2UkFvX +# zpoYxDBWBgNVHR8ETzBNMEugSaBHhkVodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20v +# cGtpL2NybC9wcm9kdWN0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcmwwWgYI +# KwYBBQUHAQEETjBMMEoGCCsGAQUFBzAChj5odHRwOi8vd3d3Lm1pY3Jvc29mdC5j +# b20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dF8yMDEwLTA2LTIzLmNydDCBoAYDVR0g +# AQH/BIGVMIGSMIGPBgkrBgEEAYI3LgMwgYEwPQYIKwYBBQUHAgEWMWh0dHA6Ly93 +# d3cubWljcm9zb2Z0LmNvbS9QS0kvZG9jcy9DUFMvZGVmYXVsdC5odG0wQAYIKwYB +# BQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AUABvAGwAaQBjAHkAXwBTAHQAYQB0AGUA +# bQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAAfmiFEN4sbgmD+BcQM9naOh +# IW+z66bM9TG+zwXiqf76V20ZMLPCxWbJat/15/B4vceoniXj+bzta1RXCCtRgkQS +# +7lTjMz0YBKKdsxAQEGb3FwX/1z5Xhc1mCRWS3TvQhDIr79/xn/yN31aPxzymXlK +# kVIArzgPF/UveYFl2am1a+THzvbKegBvSzBEJCI8z+0DpZaPWSm8tv0E4XCfMkon +# /VWvL/625Y4zu2JfmttXQOnxzplmkIz/amJ/3cVKC5Em4jnsGUpxY517IW3DnKOi +# PPp/fZZqkHimbdLhnPkd/DjYlPTGpQqWhqS9nhquBEKDuLWAmyI4ILUl5WTs9/S/ +# fmNZJQ96LjlXdqJxqgaKD4kWumGnEcua2A5HmoDF0M2n0O99g/DhO3EJ3110mCII +# YdqwUB5vvfHhAN/nMQekkzr3ZUd46PioSKv33nJ+YWtvd6mBy6cJrDm77MbL2IK0 +# cs0d9LiFAR6A+xuJKlQ5slvayA1VmXqHczsI5pgt6o3gMy4SKfXAL1QnIffIrE7a +# KLixqduWsqdCosnPGUFN4Ib5KpqjEWYw07t0MkvfY3v1mYovG8chr1m1rtxEPJdQ +# cdeh0sVV42neV8HR3jDA/czmTfsNv11P6Z0eGTgvvM9YBS7vDaBQNdrvCScc1bN+ +# NR4Iuto229Nfj950iEkSoYIC0jCCAjsCAQEwgfyhgdSkgdEwgc4xCzAJBgNVBAYT +# AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYD +# VQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKTAnBgNVBAsTIE1pY3Jvc29mdCBP +# cGVyYXRpb25zIFB1ZXJ0byBSaWNvMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjow +# QTU2LUUzMjktNEQ0RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy +# dmljZaIjCgEBMAcGBSsOAwIaAxUAs5W4TmyDHMRM7iz6mgGojqvXHzOggYMwgYCk +# fjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH +# UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD +# Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIF +# AOJ5mikwIhgPMjAyMDA1MjgwNjAyMTdaGA8yMDIwMDUyOTA2MDIxN1owdzA9Bgor +# BgEEAYRZCgQBMS8wLTAKAgUA4nmaKQIBADAKAgEAAgIghAIB/zAHAgEAAgIRsTAK +# AgUA4nrrqQIBADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIB +# AAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAKlrFVoLzatzP6jP +# zjn/Uk7ez7jWLI5wxXcP+z6595VcC/2ZsI3HN7LIdB6Bp80Tiz1Te2S5pUBGm1OD +# TwvbRARh2Ocs8XSCV01rt3RaSnmV2XzZwpPiPMM1xWz7sGfvkxh/P/ERYPvD90e1 +# c/lup9Qod2acmX5UPbBCJ17pH/JsMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMC +# VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV +# BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRp +# bWUtU3RhbXAgUENBIDIwMTACEzMAAAEnL26j75GoGagAAAAAAScwDQYJYIZIAWUD +# BAIBBQCgggFKMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0B +# CQQxIgQggrSfnkwcsMTOxiqyqyp6WA8bdfFsGWnVxlMc42q2NqowgfoGCyqGSIb3 +# DQEJEAIvMYHqMIHnMIHkMIG9BCAbkuhLEoYdahb/BUyVszO2VDi6kB3MSaof/+8u +# 7SM+IjCBmDCBgKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9u +# MRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRp +# b24xJjAkBgNVBAMTHU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAAB +# Jy9uo++RqBmoAAAAAAEnMCIEIAYecV94YBfChiHO2X367cIGW5iIaPzmTqnRpYsp +# 9/mvMA0GCSqGSIb3DQEBCwUABIIBAI5HhXklMmMwHFtce3Jot4RdGHmWqtlIZy2Z +# cxWtT+CNVhGpdKZVgnH2BoLj/sGDgYWCCEG4fElhYR+QvnBtXewteI0XPb0funyG +# epL5QVCcTw+GsBrkAtDn20hLn7YoybL66psj5cUCve1jdry5XZEntyMCQgQCNluw +# 23iNRHGEH2nWBSBdwuatvtxHQhXEPhUOUxfYijGdzwbA4bz83hLI5lFIvia6wH+P +# bwHSlaOybJ3P7wjXnImLOHcuKouU7MInBY3rV3dkZ8v5YhLQQ0zAdnAZ0sBqIMlx +# rrmDvenSWGeCavl2FyhrtSPZyW3t2ykSIDl+eJ60vE0u0crIyuo= +# SIG # End signature block diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Hyak.Common.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Hyak.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..18a53248894f2c6159ca11001544daa915289b5b GIT binary patch literal 63880 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 WEh9E(pL;jZjM1dJ8d+Cj*na@ktwkIF literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.ApplicationInsights.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.ApplicationInsights.dll new file mode 100644 index 0000000000000000000000000000000000000000..a176a44730866ec4548d8b0ae0054671bf2a90e4 GIT binary patch literal 179960 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 JDbRl&YBu7JY~mLWG1polhd`| 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 HlW_kJG8x>{ literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.Common.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..1c9d8e2a0ef5888c365e9ef031925877445675ab GIT binary patch literal 35720 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 Jf&TB3{{>qHNUQ(= literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.Abstractions.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.Abstractions.dll new file mode 100644 index 0000000000000000000000000000000000000000..29a8b6bdf3236274f0f4a925d15a88c2b995cf6a GIT binary patch literal 101760 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 PHfmkXg5_)zAqf8;c@mLM literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.deps.json b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.deps.json new file mode 100644 index 000000000000..b42bc3fddc16 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.deps.json @@ -0,0 +1,1768 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "Microsoft.Azure.PowerShell.Authentication.ResourceManager/1.0.0": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.ApplicationInsights": "2.4.0", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Azure.PowerShell.Authentication": "1.0.0", + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Aks": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Authorization": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Compute": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.KeyVault": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Monitor": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Network": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.PolicyInsights": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.ResourceManager": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Storage.Management": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Websites": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Storage": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Strategies": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "NETStandard.Library": "2.0.3", + "Newtonsoft.Json": "10.0.3", + "PowerShellStandard.Library": "5.1.0" + }, + "runtime": { + "Microsoft.Azure.PowerShell.Authentication.ResourceManager.dll": {} + } + }, + "Hyak.Common/1.2.2": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "Newtonsoft.Json": "10.0.3", + "System.Reflection": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.4/Hyak.Common.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.2.2.0" + } + } + }, + "Microsoft.ApplicationInsights/2.4.0": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "System.Diagnostics.DiagnosticSource": "4.4.0", + "System.Diagnostics.StackTrace": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.ApplicationInsights.dll": { + "assemblyVersion": "2.4.0.0", + "fileVersion": "2.4.0.32153" + } + } + }, + "Microsoft.Azure.Common/2.2.1": { + "dependencies": { + "Hyak.Common": "1.2.2", + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "lib/netstandard1.4/Microsoft.Azure.Common.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.2.1.0" + } + } + }, + "Microsoft.Azure.PowerShell.Authentication.Abstractions/1.3.14-preview": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Authentication.Abstractions.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Aks/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Aks.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Authorization/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Authorization.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Compute/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Compute.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.ResourceManager": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.KeyVault/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.NonGeneric": "4.3.0", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.KeyVault.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Monitor/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Monitor.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Network/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Network.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.PolicyInsights/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.PolicyInsights.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.ResourceManager/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.ResourceManager.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Storage.Management/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "System.Collections.NonGeneric": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Storage.Management.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Websites/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Websites.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Common/1.3.14-preview": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.ApplicationInsights": "2.4.0", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Common.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Storage/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Storage.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Strategies/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Strategies.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.CSharp/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Dynamic.Runtime": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "Microsoft.IdentityModel.Clients.ActiveDirectory/3.19.2": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "System.Runtime.Serialization.Json": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll": { + "assemblyVersion": "3.19.2.6005", + "fileVersion": "3.19.50302.130" + }, + "lib/netstandard1.3/Microsoft.IdentityModel.Clients.ActiveDirectory.dll": { + "assemblyVersion": "3.19.2.6005", + "fileVersion": "3.19.50302.130" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "Microsoft.Rest.ClientRuntime/2.3.20": { + "dependencies": { + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Rest.ClientRuntime.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.3.20.0" + } + } + }, + "Microsoft.Rest.ClientRuntime.Azure/3.3.19": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Rest.ClientRuntime.Azure.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.3.18.0" + } + } + }, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "Newtonsoft.Json/10.0.3": { + "dependencies": { + "Microsoft.CSharp": "4.3.0", + "NETStandard.Library": "2.0.3", + "System.ComponentModel.TypeConverter": "4.3.0", + "System.Runtime.Serialization.Formatters": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Newtonsoft.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.3.21018" + } + } + }, + "PowerShellStandard.Library/5.1.0": {}, + "runtime.native.System/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Buffers/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.1/System.Buffers.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": { + "assemblyVersion": "4.0.13.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.Immutable/1.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Collections.Immutable.dll": { + "assemblyVersion": "1.2.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.NonGeneric/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.Specialized/4.3.0": { + "dependencies": { + "System.Collections.NonGeneric": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Specialized.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24702.1" + } + } + }, + "System.ComponentModel/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.ComponentModel.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ComponentModel.Primitives/4.3.0": { + "dependencies": { + "System.ComponentModel": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.ComponentModel.Primitives.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.NonGeneric": "4.3.0", + "System.Collections.Specialized": "4.3.0", + "System.ComponentModel": "4.3.0", + "System.ComponentModel.Primitives": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.DiagnosticSource/4.4.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.25427.3" + } + } + }, + "System.Diagnostics.StackTrace/4.3.0": { + "dependencies": { + "System.IO.FileSystem": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Metadata": "1.4.1", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Dynamic.Runtime/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Dynamic.Runtime.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + } + }, + "System.IO.FileSystem/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Linq/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Linq.Expressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ObjectModel/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": { + "assemblyVersion": "4.0.13.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Private.DataContractSerialization/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Private.DataContractSerialization.dll": { + "assemblyVersion": "4.1.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit/4.3.0": { + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Metadata/1.4.1": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Immutable": "1.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.1/System.Reflection.Metadata.dll": { + "assemblyVersion": "1.4.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.Serialization.Formatters/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0" + }, + "runtime": { + "lib/netstandard1.4/System.Runtime.Serialization.Formatters.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Runtime.Serialization.Json/4.3.0": { + "dependencies": { + "System.IO": "4.3.0", + "System.Private.DataContractSerialization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Json.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Runtime.Serialization.Primitives/4.3.0": { + "dependencies": { + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": { + "assemblyVersion": "4.1.2.0", + "fileVersion": "4.6.24702.1" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Security.SecureString/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Text.RegularExpressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "4.1.0.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": { + "assemblyVersion": "4.1.0.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XmlDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlDocument.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XmlSerializer/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlSerializer.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "Microsoft.Azure.PowerShell.Authentication/1.0.0": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.ApplicationInsights": "2.4.0", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Aks": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Authorization": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Compute": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.KeyVault": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Monitor": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Network": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.PolicyInsights": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.ResourceManager": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Storage.Management": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Websites": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Storage": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Strategies": "1.3.14-preview", + "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.19.2", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "Microsoft.Azure.PowerShell.Authentication.dll": {} + } + } + } + }, + "libraries": { + "Microsoft.Azure.PowerShell.Authentication.ResourceManager/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Hyak.Common/1.2.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uZpnFn48nSQwHcO0/GSBZ7ExaO0sTXKv8KariXXEWLaB4Q3AeQoprYG4WpKsCT0ByW3YffETivgc5rcH5RRDvQ==", + "path": "hyak.common/1.2.2", + "hashPath": "hyak.common.1.2.2.nupkg.sha512" + }, + "Microsoft.ApplicationInsights/2.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4dX/zu3Psz9oM3ErU64xfOHuSxOwMxN6q5RabSkeYbX42Yn6dR/kDToqjs+txCRjrfHUxyYjfeJHu+MbCfvAsg==", + "path": "microsoft.applicationinsights/2.4.0", + "hashPath": "microsoft.applicationinsights.2.4.0.nupkg.sha512" + }, + "Microsoft.Azure.Common/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-abzRooh4ACKjzAKxRB6r+SHKW3d+IrLcgtVG81D+3kQU/OMjAZS1oDp9CDalhSbmxa84u0MHM5N+AKeTtKPoiw==", + "path": "microsoft.azure.common/2.2.1", + "hashPath": "microsoft.azure.common.2.2.1.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Authentication.Abstractions/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETNjmwE9SjJgKngxlOcwoGRfuoJ3PfaYU+BA2hK6AFxiaYS5oh6RCzZdi8D00cICjmmfeJW0/YOgh07LChXvzg==", + "path": "microsoft.azure.powershell.authentication.abstractions/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.authentication.abstractions.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Aks/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JWxCoGP5cc8jIs6hIVpzKr4NqlVw9b/t6HRyGzz26hBdFwUB7vjC85iOMwNyXx3k7pQYyhpboXskMUjR7m7Y8w==", + "path": "microsoft.azure.powershell.clients.aks/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.aks.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Authorization/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FXB2541v1wLgutY9nEDdhoFRe5Xx5k7AkFUc7gVyXw7rpv40iU8hBFEdN2U5EWI6PD3YXuPf19knEodB+EhKfw==", + "path": "microsoft.azure.powershell.clients.authorization/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.authorization.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Compute/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AJ5FVC2Cx9NkPLnovuF/+3kkXJOtrtbAPaaeLXsJ5DCdr/rOARgaIzMZERPDZ0KZaq9Wbz9RX2Tiq+MoemL/jw==", + "path": "microsoft.azure.powershell.clients.compute/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.compute.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nJ8cNAUi1TPt2Uwu+ltbiqpfbsPRB6emxSsgN2+AAUlSnmxECN2ED8vehDCV0cgSA9ctkdfvTffP62J7yEZIvw==", + "path": "microsoft.azure.powershell.clients.graph.rbac/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.graph.rbac.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.KeyVault/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nUzPB8cqLkpCm9tJ4jTmD19HyLfoVlRGyISd9VhvtMKbXeCe8ALOfjrvd0iA0STPSsvfv5SQJjzpm4z7oWwnDw==", + "path": "microsoft.azure.powershell.clients.keyvault/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.keyvault.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Monitor/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Qn5ZCRf0X5hwHxX2necOdw4aI1BfBO+PfvxW+vCV8sKLZO6NMws7Ah6KelkxyReqJ25IyTkKaDw1uzvxB4srbA==", + "path": "microsoft.azure.powershell.clients.monitor/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.monitor.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Network/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cXZY84Ngul8uWrWGRsYMhgjzUQzPEpotG0kK36x29SUped8+LHj4tFlw1zQzguMn4wlJKKg9EqHeO7tvYk1Clw==", + "path": "microsoft.azure.powershell.clients.network/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.network.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.PolicyInsights/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-B7tgo5CckvUaO4KtHb+R8B/ou1gknGIuKggvQeWnf5ef0w5uVoQYx+Z34AJeDQou8yqoQhwcxri/BDovY1S3Ng==", + "path": "microsoft.azure.powershell.clients.policyinsights/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.policyinsights.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.ResourceManager/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jhbIeAHnlorlyuVbeFSCu3EwxWRE+zQIjbQpCktPVOyWSVazuupZOd8pIMYwWKQ17ECNBmZT1hTxemQq6g0MVA==", + "path": "microsoft.azure.powershell.clients.resourcemanager/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.resourcemanager.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Storage.Management/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-chQnmrzfsCrkM7vjVYLowGkQ3uZXjYXdWFx6dbDRsVKJdZMruECGojUJzsXmmGzw0tcX0PUuLcOSPgrX64tDUw==", + "path": "microsoft.azure.powershell.clients.storage.management/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.storage.management.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Websites/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-n0CrbLC7mGvKcJgWHhPd36I4xjvPi451Qkhe4njW1LcK1sSgsu/F+N7MKbWgFVdAgfHF7nBNseaF6uPTAVxO4Q==", + "path": "microsoft.azure.powershell.clients.websites/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.websites.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Common/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/gOD/wU1cHvwqMk0TylhYOaOIxnYX9mK3JbwbjVxlkxIw6kUNfaS8vw4ZBIwzNR8o2GfUut3rBniaXfP+ZU99g==", + "path": "microsoft.azure.powershell.common/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.common.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Storage/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-efBoANDAUqPCvSAQ+KVe83bBooeCnKcmN2fulZEUxSeoVkTmIzpY+lpBIQfAK5aIqlIE/usvRRW/tyqjIvlprQ==", + "path": "microsoft.azure.powershell.storage/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.storage.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Strategies/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Cg5OnAFIfF7Wb0oUvQ8R/+j01RHjvGT/kLy+KOxsX9eS86RaZHiP4ZT5UYLIp+d3ASVTuQ8BcGn/18fqqgZuNQ==", + "path": "microsoft.azure.powershell.strategies/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.strategies.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.CSharp/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P+MBhIM0YX+JqROuf7i306ZLJEjQYA9uUyRDE+OqwUI5sh41e2ZbPQV3LfAPh+29cmceE1pUffXsGfR4eMY3KA==", + "path": "microsoft.csharp/4.3.0", + "hashPath": "microsoft.csharp.4.3.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Clients.ActiveDirectory/3.19.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iVekNTh7TMbY1VNoL2h4dUGGgW6MnvlpaRp2anpVDL+B7lXYsQmaJd7DejaEAYYa98DHB9oZl8YkqTVSn760jA==", + "path": "microsoft.identitymodel.clients.activedirectory/3.19.2", + "hashPath": "microsoft.identitymodel.clients.activedirectory.3.19.2.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "Microsoft.Rest.ClientRuntime/2.3.20": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bw/H1nO4JdnhTagPHWIFQwtlQ6rb2jqw5RTrqPsPqzrjhJxc7P6MyNGdf4pgHQdzdpBSNOfZTEQifoUkxmzYXQ==", + "path": "microsoft.rest.clientruntime/2.3.20", + "hashPath": "microsoft.rest.clientruntime.2.3.20.nupkg.sha512" + }, + "Microsoft.Rest.ClientRuntime.Azure/3.3.19": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+NVBWvRXNwaAPTZUxjUlQggsrf3X0GbiRoxYfgc3kG9E55ZxZxvZPT3nIfC4DNqzGSXUEvmLbckdXgBBzGdUaA==", + "path": "microsoft.rest.clientruntime.azure/3.3.19", + "hashPath": "microsoft.rest.clientruntime.azure.3.3.19.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "Newtonsoft.Json/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hSXaFmh7hNCuEoC4XNY5DrRkLDzYHqPx/Ik23R4J86Z7PE/Y6YidhG602dFVdLBRSdG6xp9NabH3dXpcoxWvww==", + "path": "newtonsoft.json/10.0.3", + "hashPath": "newtonsoft.json.10.0.3.nupkg.sha512" + }, + "PowerShellStandard.Library/5.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iYaRvQsM1fow9h3uEmio+2m2VXfulgI16AYHaTZ8Sf7erGe27Qc8w/h6QL5UPuwv1aXR40QfzMEwcCeiYJp2cw==", + "path": "powershellstandard.library/5.1.0", + "hashPath": "powershellstandard.library.5.1.0.nupkg.sha512" + }, + "runtime.native.System/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "path": "runtime.native.system/4.3.0", + "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-b+V9JC/Ii3sR659flBeaBJww111425tgjcDS1k+hqV4sGh9FALRDBvJnDtQ895gAzpPTUOFDHdqaZ2Et7BpZMg==", + "path": "runtime.native.system.io.compression/4.3.0", + "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" + }, + "System.Buffers/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", + "path": "system.buffers/4.3.0", + "hashPath": "system.buffers.4.3.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Collections.Immutable/1.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zukBRPUuNxwy9m4TGWLxKAnoiMc9+B+8VXeXVyPiBPvOd7yLgAlZ1DlsRWJjMx4VsvhhF2+6q6kO2GRbPja6hA==", + "path": "system.collections.immutable/1.3.0", + "hashPath": "system.collections.immutable.1.3.0.nupkg.sha512" + }, + "System.Collections.NonGeneric/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", + "path": "system.collections.nongeneric/4.3.0", + "hashPath": "system.collections.nongeneric.4.3.0.nupkg.sha512" + }, + "System.Collections.Specialized/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NoPBj0ykejqAWW4p4gGtrrL+3c84ZLSvGnHgq422ew1Rj4WKj1FA8/BCybqC111EtgcqUl6ZJNFYYS22HLgbjA==", + "path": "system.collections.specialized/4.3.0", + "hashPath": "system.collections.specialized.4.3.0.nupkg.sha512" + }, + "System.ComponentModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", + "path": "system.componentmodel/4.3.0", + "hashPath": "system.componentmodel.4.3.0.nupkg.sha512" + }, + "System.ComponentModel.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", + "path": "system.componentmodel.primitives/4.3.0", + "hashPath": "system.componentmodel.primitives.4.3.0.nupkg.sha512" + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", + "path": "system.componentmodel.typeconverter/4.3.0", + "hashPath": "system.componentmodel.typeconverter.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2SMt95w+TKf2fth4mSlqn1AVNSmFDQkdTVmUe6D/oP1atzVU0vxTb+iDP+IHNQB1qSbYkWNoPN55SaMsGUe68A==", + "path": "system.diagnostics.diagnosticsource/4.4.0", + "hashPath": "system.diagnostics.diagnosticsource.4.4.0.nupkg.sha512" + }, + "System.Diagnostics.StackTrace/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiHg0vgtd35/DM9jvtaC1eKRpWZxr0gcQd643ABG7GnvSlf5pOkY2uyd42mMOJoOmKvnpNj0F4tuoS1pacTwYw==", + "path": "system.diagnostics.stacktrace/4.3.0", + "hashPath": "system.diagnostics.stacktrace.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "path": "system.diagnostics.tools/4.3.0", + "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Dynamic.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", + "path": "system.dynamic.runtime/4.3.0", + "hashPath": "system.dynamic.runtime.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "path": "system.globalization.extensions/4.3.0", + "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "path": "system.io.compression/4.3.0", + "hashPath": "system.io.compression.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "path": "system.io.filesystem/4.3.0", + "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "path": "system.io.filesystem.primitives/4.3.0", + "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" + }, + "System.Linq/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "path": "system.linq/4.3.0", + "hashPath": "system.linq.4.3.0.nupkg.sha512" + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "path": "system.linq.expressions/4.3.0", + "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "path": "system.objectmodel/4.3.0", + "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" + }, + "System.Private.DataContractSerialization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==", + "path": "system.private.datacontractserialization/4.3.0", + "hashPath": "system.private.datacontractserialization.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "path": "system.reflection.emit/4.3.0", + "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "path": "system.reflection.emit.lightweight/4.3.0", + "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "path": "system.reflection.extensions/4.3.0", + "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" + }, + "System.Reflection.Metadata/1.4.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tc2ZyJgweHCLci5oQGuhQn9TD0Ii9DReXkHtZm3aAGp8xe40rpRjiTbMXOtZU+fr0BOQ46goE9+qIqRGjR9wGg==", + "path": "system.reflection.metadata/1.4.1", + "hashPath": "system.reflection.metadata.1.4.1.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "path": "system.reflection.typeextensions/4.3.0", + "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "path": "system.runtime.handles/4.3.0", + "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "path": "system.runtime.interopservices/4.3.0", + "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Formatters/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KT591AkTNFOTbhZlaeMVvfax3RqhH1EJlcwF50Wm7sfnBLuHiOeZRRKrr1ns3NESkM20KPZ5Ol/ueMq5vg4QoQ==", + "path": "system.runtime.serialization.formatters/4.3.0", + "hashPath": "system.runtime.serialization.formatters.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Json/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==", + "path": "system.runtime.serialization.json/4.3.0", + "hashPath": "system.runtime.serialization.json.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2Z5t70a2SwMsfQDp9KOclaZNyQhfIga2gppq9lIUDM1A4ohTshn4JqT7ir8bvIhXgorWKYDAr6rPzEbi/nTGKg==", + "path": "system.runtime.serialization.primitives/4.3.0", + "hashPath": "system.runtime.serialization.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "path": "system.security.cryptography.primitives/4.3.0", + "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.SecureString/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PnXp38O9q/2Oe4iZHMH60kinScv6QiiL2XH54Pj2t0Y6c2zKPEiAZsM/M3wBOHLNTBDFP0zfy13WN2M0qFz5jg==", + "path": "system.security.securestring/4.3.0", + "hashPath": "system.security.securestring.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "path": "system.text.encoding.extensions/4.3.0", + "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "path": "system.text.regularexpressions/4.3.0", + "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "path": "system.threading.tasks.extensions/4.3.0", + "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512" + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "path": "system.xml.readerwriter/4.3.0", + "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "path": "system.xml.xdocument/4.3.0", + "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" + }, + "System.Xml.XmlDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", + "path": "system.xml.xmldocument/4.3.0", + "hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512" + }, + "System.Xml.XmlSerializer/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==", + "path": "system.xml.xmlserializer/4.3.0", + "hashPath": "system.xml.xmlserializer.4.3.0.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Authentication/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.ResourceManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..1cf97f717333e9550ee4111c925191279d931aff GIT binary patch literal 70520 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.deps.json b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.deps.json new file mode 100644 index 000000000000..d57557585a3f --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.deps.json @@ -0,0 +1,1734 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "Microsoft.Azure.PowerShell.Authentication/1.0.0": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.ApplicationInsights": "2.4.0", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Aks": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Authorization": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Compute": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.KeyVault": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Monitor": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Network": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.PolicyInsights": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.ResourceManager": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Storage.Management": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.Websites": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Storage": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Strategies": "1.3.14-preview", + "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.19.2", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "NETStandard.Library": "2.0.3", + "Newtonsoft.Json": "10.0.3", + "PowerShellStandard.Library": "5.1.0" + }, + "runtime": { + "Microsoft.Azure.PowerShell.Authentication.dll": {} + } + }, + "Hyak.Common/1.2.2": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "Newtonsoft.Json": "10.0.3", + "System.Reflection": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.4/Hyak.Common.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.2.2.0" + } + } + }, + "Microsoft.ApplicationInsights/2.4.0": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "System.Diagnostics.DiagnosticSource": "4.4.0", + "System.Diagnostics.StackTrace": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.ApplicationInsights.dll": { + "assemblyVersion": "2.4.0.0", + "fileVersion": "2.4.0.32153" + } + } + }, + "Microsoft.Azure.Common/2.2.1": { + "dependencies": { + "Hyak.Common": "1.2.2", + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "lib/netstandard1.4/Microsoft.Azure.Common.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.2.1.0" + } + } + }, + "Microsoft.Azure.PowerShell.Authentication.Abstractions/1.3.14-preview": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Authentication.Abstractions.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Aks/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Aks.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Authorization/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Authorization.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Compute/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Compute.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Clients.ResourceManager": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.KeyVault/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.NonGeneric": "4.3.0", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.KeyVault.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Monitor/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Monitor.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Network/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Network.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.PolicyInsights/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.PolicyInsights.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.ResourceManager/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Azure.PowerShell.Common": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.ResourceManager.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Storage.Management/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "System.Collections.NonGeneric": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Storage.Management.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Clients.Websites/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3", + "System.Collections.Specialized": "4.3.0", + "System.Reflection": "4.3.0", + "System.Security.SecureString": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Clients.Websites.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Common/1.3.14-preview": { + "dependencies": { + "Hyak.Common": "1.2.2", + "Microsoft.ApplicationInsights": "2.4.0", + "Microsoft.Azure.Common": "2.2.1", + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Common.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Storage/1.3.14-preview": { + "dependencies": { + "Microsoft.Azure.PowerShell.Authentication.Abstractions": "1.3.14-preview", + "Microsoft.Rest.ClientRuntime": "2.3.20" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Storage.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.Azure.PowerShell.Strategies/1.3.14-preview": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Microsoft.Rest.ClientRuntime.Azure": "3.3.19", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Azure.PowerShell.Strategies.dll": { + "assemblyVersion": "1.0.0.0", + "fileVersion": "1.3.14.0" + } + } + }, + "Microsoft.CSharp/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Dynamic.Runtime": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.CSharp.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "Microsoft.IdentityModel.Clients.ActiveDirectory/3.19.2": { + "dependencies": { + "NETStandard.Library": "2.0.3", + "System.Runtime.Serialization.Json": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll": { + "assemblyVersion": "3.19.2.6005", + "fileVersion": "3.19.50302.130" + }, + "lib/netstandard1.3/Microsoft.IdentityModel.Clients.ActiveDirectory.dll": { + "assemblyVersion": "3.19.2.6005", + "fileVersion": "3.19.50302.130" + } + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, + "Microsoft.Rest.ClientRuntime/2.3.20": { + "dependencies": { + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Rest.ClientRuntime.dll": { + "assemblyVersion": "2.0.0.0", + "fileVersion": "2.3.20.0" + } + } + }, + "Microsoft.Rest.ClientRuntime.Azure/3.3.19": { + "dependencies": { + "Microsoft.Rest.ClientRuntime": "2.3.20", + "Newtonsoft.Json": "10.0.3" + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Rest.ClientRuntime.Azure.dll": { + "assemblyVersion": "3.0.0.0", + "fileVersion": "3.3.18.0" + } + } + }, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "Newtonsoft.Json/10.0.3": { + "dependencies": { + "Microsoft.CSharp": "4.3.0", + "NETStandard.Library": "2.0.3", + "System.ComponentModel.TypeConverter": "4.3.0", + "System.Runtime.Serialization.Formatters": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/Newtonsoft.Json.dll": { + "assemblyVersion": "10.0.0.0", + "fileVersion": "10.0.3.21018" + } + } + }, + "PowerShellStandard.Library/5.1.0": {}, + "runtime.native.System/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Buffers/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.1/System.Buffers.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": { + "assemblyVersion": "4.0.13.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.Immutable/1.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Collections.Immutable.dll": { + "assemblyVersion": "1.2.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.NonGeneric/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.NonGeneric.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Collections.Specialized/4.3.0": { + "dependencies": { + "System.Collections.NonGeneric": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Specialized.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24702.1" + } + } + }, + "System.ComponentModel/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.ComponentModel.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ComponentModel.Primitives/4.3.0": { + "dependencies": { + "System.ComponentModel": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.ComponentModel.Primitives.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.NonGeneric": "4.3.0", + "System.Collections.Specialized": "4.3.0", + "System.ComponentModel": "4.3.0", + "System.ComponentModel.Primitives": "4.3.0", + "System.Globalization": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.DiagnosticSource/4.4.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.25427.3" + } + } + }, + "System.Diagnostics.StackTrace/4.3.0": { + "dependencies": { + "System.IO.FileSystem": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Metadata": "1.4.1", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Diagnostics.StackTrace.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Diagnostics.Tools/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Dynamic.Runtime/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Linq": "4.3.0", + "System.Linq.Expressions": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Dynamic.Runtime.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.Compression/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Buffers": "4.3.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.IO.Compression": "4.3.0" + } + }, + "System.IO.FileSystem/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Linq/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Linq.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Linq.Expressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.ObjectModel": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Linq.Expressions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.ObjectModel/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.ObjectModel.dll": { + "assemblyVersion": "4.0.13.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Private.DataContractSerialization/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Emit.Lightweight": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XDocument": "4.3.0", + "System.Xml.XmlDocument": "4.3.0", + "System.Xml.XmlSerializer": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Private.DataContractSerialization.dll": { + "assemblyVersion": "4.1.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Emit/4.3.0": { + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Metadata/1.4.1": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Collections.Immutable": "1.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.IO": "4.3.0", + "System.IO.Compression": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.1/System.Reflection.Metadata.dll": { + "assemblyVersion": "1.4.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions/4.3.0": { + "dependencies": { + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.5/System.Reflection.TypeExtensions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.Serialization.Formatters/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Serialization.Primitives": "4.3.0" + }, + "runtime": { + "lib/netstandard1.4/System.Runtime.Serialization.Formatters.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Runtime.Serialization.Json/4.3.0": { + "dependencies": { + "System.IO": "4.3.0", + "System.Private.DataContractSerialization": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Json.dll": { + "assemblyVersion": "4.0.3.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Runtime.Serialization.Primitives/4.3.0": { + "dependencies": { + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": { + "assemblyVersion": "4.1.2.0", + "fileVersion": "4.6.24702.1" + } + } + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": { + "assemblyVersion": "4.0.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Security.SecureString/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Text.RegularExpressions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0" + }, + "runtime": { + "lib/netstandard1.6/System.Text.RegularExpressions.dll": { + "assemblyVersion": "4.1.1.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "runtime": { + "lib/netstandard1.0/System.Threading.Tasks.Extensions.dll": { + "assemblyVersion": "4.1.0.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.ReaderWriter/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Text.Encoding.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "System.Threading.Tasks.Extensions": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.ReaderWriter.dll": { + "assemblyVersion": "4.1.0.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tools": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XDocument.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XmlDocument/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlDocument.dll": { + "assemblyVersion": "4.0.2.0", + "fileVersion": "4.6.24705.1" + } + } + }, + "System.Xml.XmlSerializer/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Linq": "4.3.0", + "System.Reflection": "4.3.0", + "System.Reflection.Emit": "4.3.0", + "System.Reflection.Emit.ILGeneration": "4.3.0", + "System.Reflection.Extensions": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Reflection.TypeExtensions": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Text.RegularExpressions": "4.3.0", + "System.Threading": "4.3.0", + "System.Xml.ReaderWriter": "4.3.0", + "System.Xml.XmlDocument": "4.3.0" + }, + "runtime": { + "lib/netstandard1.3/System.Xml.XmlSerializer.dll": { + "assemblyVersion": "4.0.12.0", + "fileVersion": "4.6.24705.1" + } + } + } + } + }, + "libraries": { + "Microsoft.Azure.PowerShell.Authentication/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Hyak.Common/1.2.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uZpnFn48nSQwHcO0/GSBZ7ExaO0sTXKv8KariXXEWLaB4Q3AeQoprYG4WpKsCT0ByW3YffETivgc5rcH5RRDvQ==", + "path": "hyak.common/1.2.2", + "hashPath": "hyak.common.1.2.2.nupkg.sha512" + }, + "Microsoft.ApplicationInsights/2.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-4dX/zu3Psz9oM3ErU64xfOHuSxOwMxN6q5RabSkeYbX42Yn6dR/kDToqjs+txCRjrfHUxyYjfeJHu+MbCfvAsg==", + "path": "microsoft.applicationinsights/2.4.0", + "hashPath": "microsoft.applicationinsights.2.4.0.nupkg.sha512" + }, + "Microsoft.Azure.Common/2.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-abzRooh4ACKjzAKxRB6r+SHKW3d+IrLcgtVG81D+3kQU/OMjAZS1oDp9CDalhSbmxa84u0MHM5N+AKeTtKPoiw==", + "path": "microsoft.azure.common/2.2.1", + "hashPath": "microsoft.azure.common.2.2.1.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Authentication.Abstractions/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ETNjmwE9SjJgKngxlOcwoGRfuoJ3PfaYU+BA2hK6AFxiaYS5oh6RCzZdi8D00cICjmmfeJW0/YOgh07LChXvzg==", + "path": "microsoft.azure.powershell.authentication.abstractions/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.authentication.abstractions.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Aks/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JWxCoGP5cc8jIs6hIVpzKr4NqlVw9b/t6HRyGzz26hBdFwUB7vjC85iOMwNyXx3k7pQYyhpboXskMUjR7m7Y8w==", + "path": "microsoft.azure.powershell.clients.aks/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.aks.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Authorization/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FXB2541v1wLgutY9nEDdhoFRe5Xx5k7AkFUc7gVyXw7rpv40iU8hBFEdN2U5EWI6PD3YXuPf19knEodB+EhKfw==", + "path": "microsoft.azure.powershell.clients.authorization/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.authorization.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Compute/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AJ5FVC2Cx9NkPLnovuF/+3kkXJOtrtbAPaaeLXsJ5DCdr/rOARgaIzMZERPDZ0KZaq9Wbz9RX2Tiq+MoemL/jw==", + "path": "microsoft.azure.powershell.clients.compute/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.compute.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Graph.Rbac/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nJ8cNAUi1TPt2Uwu+ltbiqpfbsPRB6emxSsgN2+AAUlSnmxECN2ED8vehDCV0cgSA9ctkdfvTffP62J7yEZIvw==", + "path": "microsoft.azure.powershell.clients.graph.rbac/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.graph.rbac.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.KeyVault/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-nUzPB8cqLkpCm9tJ4jTmD19HyLfoVlRGyISd9VhvtMKbXeCe8ALOfjrvd0iA0STPSsvfv5SQJjzpm4z7oWwnDw==", + "path": "microsoft.azure.powershell.clients.keyvault/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.keyvault.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Monitor/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Qn5ZCRf0X5hwHxX2necOdw4aI1BfBO+PfvxW+vCV8sKLZO6NMws7Ah6KelkxyReqJ25IyTkKaDw1uzvxB4srbA==", + "path": "microsoft.azure.powershell.clients.monitor/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.monitor.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Network/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cXZY84Ngul8uWrWGRsYMhgjzUQzPEpotG0kK36x29SUped8+LHj4tFlw1zQzguMn4wlJKKg9EqHeO7tvYk1Clw==", + "path": "microsoft.azure.powershell.clients.network/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.network.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.PolicyInsights/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-B7tgo5CckvUaO4KtHb+R8B/ou1gknGIuKggvQeWnf5ef0w5uVoQYx+Z34AJeDQou8yqoQhwcxri/BDovY1S3Ng==", + "path": "microsoft.azure.powershell.clients.policyinsights/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.policyinsights.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.ResourceManager/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-jhbIeAHnlorlyuVbeFSCu3EwxWRE+zQIjbQpCktPVOyWSVazuupZOd8pIMYwWKQ17ECNBmZT1hTxemQq6g0MVA==", + "path": "microsoft.azure.powershell.clients.resourcemanager/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.resourcemanager.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Storage.Management/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-chQnmrzfsCrkM7vjVYLowGkQ3uZXjYXdWFx6dbDRsVKJdZMruECGojUJzsXmmGzw0tcX0PUuLcOSPgrX64tDUw==", + "path": "microsoft.azure.powershell.clients.storage.management/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.storage.management.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Clients.Websites/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-n0CrbLC7mGvKcJgWHhPd36I4xjvPi451Qkhe4njW1LcK1sSgsu/F+N7MKbWgFVdAgfHF7nBNseaF6uPTAVxO4Q==", + "path": "microsoft.azure.powershell.clients.websites/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.clients.websites.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Common/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/gOD/wU1cHvwqMk0TylhYOaOIxnYX9mK3JbwbjVxlkxIw6kUNfaS8vw4ZBIwzNR8o2GfUut3rBniaXfP+ZU99g==", + "path": "microsoft.azure.powershell.common/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.common.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Storage/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-efBoANDAUqPCvSAQ+KVe83bBooeCnKcmN2fulZEUxSeoVkTmIzpY+lpBIQfAK5aIqlIE/usvRRW/tyqjIvlprQ==", + "path": "microsoft.azure.powershell.storage/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.storage.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.Azure.PowerShell.Strategies/1.3.14-preview": { + "type": "package", + "serviceable": true, + "sha512": "sha512-Cg5OnAFIfF7Wb0oUvQ8R/+j01RHjvGT/kLy+KOxsX9eS86RaZHiP4ZT5UYLIp+d3ASVTuQ8BcGn/18fqqgZuNQ==", + "path": "microsoft.azure.powershell.strategies/1.3.14-preview", + "hashPath": "microsoft.azure.powershell.strategies.1.3.14-preview.nupkg.sha512" + }, + "Microsoft.CSharp/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-P+MBhIM0YX+JqROuf7i306ZLJEjQYA9uUyRDE+OqwUI5sh41e2ZbPQV3LfAPh+29cmceE1pUffXsGfR4eMY3KA==", + "path": "microsoft.csharp/4.3.0", + "hashPath": "microsoft.csharp.4.3.0.nupkg.sha512" + }, + "Microsoft.IdentityModel.Clients.ActiveDirectory/3.19.2": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iVekNTh7TMbY1VNoL2h4dUGGgW6MnvlpaRp2anpVDL+B7lXYsQmaJd7DejaEAYYa98DHB9oZl8YkqTVSn760jA==", + "path": "microsoft.identitymodel.clients.activedirectory/3.19.2", + "hashPath": "microsoft.identitymodel.clients.activedirectory.3.19.2.nupkg.sha512" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" + }, + "Microsoft.Rest.ClientRuntime/2.3.20": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bw/H1nO4JdnhTagPHWIFQwtlQ6rb2jqw5RTrqPsPqzrjhJxc7P6MyNGdf4pgHQdzdpBSNOfZTEQifoUkxmzYXQ==", + "path": "microsoft.rest.clientruntime/2.3.20", + "hashPath": "microsoft.rest.clientruntime.2.3.20.nupkg.sha512" + }, + "Microsoft.Rest.ClientRuntime.Azure/3.3.19": { + "type": "package", + "serviceable": true, + "sha512": "sha512-+NVBWvRXNwaAPTZUxjUlQggsrf3X0GbiRoxYfgc3kG9E55ZxZxvZPT3nIfC4DNqzGSXUEvmLbckdXgBBzGdUaA==", + "path": "microsoft.rest.clientruntime.azure/3.3.19", + "hashPath": "microsoft.rest.clientruntime.azure.3.3.19.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + }, + "Newtonsoft.Json/10.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-hSXaFmh7hNCuEoC4XNY5DrRkLDzYHqPx/Ik23R4J86Z7PE/Y6YidhG602dFVdLBRSdG6xp9NabH3dXpcoxWvww==", + "path": "newtonsoft.json/10.0.3", + "hashPath": "newtonsoft.json.10.0.3.nupkg.sha512" + }, + "PowerShellStandard.Library/5.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-iYaRvQsM1fow9h3uEmio+2m2VXfulgI16AYHaTZ8Sf7erGe27Qc8w/h6QL5UPuwv1aXR40QfzMEwcCeiYJp2cw==", + "path": "powershellstandard.library/5.1.0", + "hashPath": "powershellstandard.library.5.1.0.nupkg.sha512" + }, + "runtime.native.System/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "path": "runtime.native.system/4.3.0", + "hashPath": "runtime.native.system.4.3.0.nupkg.sha512" + }, + "runtime.native.System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-b+V9JC/Ii3sR659flBeaBJww111425tgjcDS1k+hqV4sGh9FALRDBvJnDtQ895gAzpPTUOFDHdqaZ2Et7BpZMg==", + "path": "runtime.native.system.io.compression/4.3.0", + "hashPath": "runtime.native.system.io.compression.4.3.0.nupkg.sha512" + }, + "System.Buffers/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ratu44uTIHgeBeI0dE8DWvmXVBSo4u7ozRZZHOMmK/JPpYyo0dAfgSiHlpiObMQ5lEtEyIXA40sKRYg5J6A8uQ==", + "path": "system.buffers/4.3.0", + "hashPath": "system.buffers.4.3.0.nupkg.sha512" + }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Collections.Immutable/1.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-zukBRPUuNxwy9m4TGWLxKAnoiMc9+B+8VXeXVyPiBPvOd7yLgAlZ1DlsRWJjMx4VsvhhF2+6q6kO2GRbPja6hA==", + "path": "system.collections.immutable/1.3.0", + "hashPath": "system.collections.immutable.1.3.0.nupkg.sha512" + }, + "System.Collections.NonGeneric/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", + "path": "system.collections.nongeneric/4.3.0", + "hashPath": "system.collections.nongeneric.4.3.0.nupkg.sha512" + }, + "System.Collections.Specialized/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-NoPBj0ykejqAWW4p4gGtrrL+3c84ZLSvGnHgq422ew1Rj4WKj1FA8/BCybqC111EtgcqUl6ZJNFYYS22HLgbjA==", + "path": "system.collections.specialized/4.3.0", + "hashPath": "system.collections.specialized.4.3.0.nupkg.sha512" + }, + "System.ComponentModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VyGn1jGRZVfxnh8EdvDCi71v3bMXrsu8aYJOwoV7SNDLVhiEqwP86pPMyRGsDsxhXAm2b3o9OIqeETfN5qfezw==", + "path": "system.componentmodel/4.3.0", + "hashPath": "system.componentmodel.4.3.0.nupkg.sha512" + }, + "System.ComponentModel.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", + "path": "system.componentmodel.primitives/4.3.0", + "hashPath": "system.componentmodel.primitives.4.3.0.nupkg.sha512" + }, + "System.ComponentModel.TypeConverter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-16pQ6P+EdhcXzPiEK4kbA953Fu0MNG2ovxTZU81/qsCd1zPRsKc3uif5NgvllCY598k6bI0KUyKW8fanlfaDQg==", + "path": "system.componentmodel.typeconverter/4.3.0", + "hashPath": "system.componentmodel.typeconverter.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.DiagnosticSource/4.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2SMt95w+TKf2fth4mSlqn1AVNSmFDQkdTVmUe6D/oP1atzVU0vxTb+iDP+IHNQB1qSbYkWNoPN55SaMsGUe68A==", + "path": "system.diagnostics.diagnosticsource/4.4.0", + "hashPath": "system.diagnostics.diagnosticsource.4.4.0.nupkg.sha512" + }, + "System.Diagnostics.StackTrace/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiHg0vgtd35/DM9jvtaC1eKRpWZxr0gcQd643ABG7GnvSlf5pOkY2uyd42mMOJoOmKvnpNj0F4tuoS1pacTwYw==", + "path": "system.diagnostics.stacktrace/4.3.0", + "hashPath": "system.diagnostics.stacktrace.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tools/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", + "path": "system.diagnostics.tools/4.3.0", + "hashPath": "system.diagnostics.tools.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Dynamic.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", + "path": "system.dynamic.runtime/4.3.0", + "hashPath": "system.dynamic.runtime.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.Globalization.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", + "path": "system.globalization.extensions/4.3.0", + "hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, + "System.IO.Compression/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", + "path": "system.io.compression/4.3.0", + "hashPath": "system.io.compression.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", + "path": "system.io.filesystem/4.3.0", + "hashPath": "system.io.filesystem.4.3.0.nupkg.sha512" + }, + "System.IO.FileSystem.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", + "path": "system.io.filesystem.primitives/4.3.0", + "hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512" + }, + "System.Linq/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "path": "system.linq/4.3.0", + "hashPath": "system.linq.4.3.0.nupkg.sha512" + }, + "System.Linq.Expressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==", + "path": "system.linq.expressions/4.3.0", + "hashPath": "system.linq.expressions.4.3.0.nupkg.sha512" + }, + "System.ObjectModel/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", + "path": "system.objectmodel/4.3.0", + "hashPath": "system.objectmodel.4.3.0.nupkg.sha512" + }, + "System.Private.DataContractSerialization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-yDaJ2x3mMmjdZEDB4IbezSnCsnjQ4BxinKhRAaP6kEgL6Bb6jANWphs5SzyD8imqeC/3FxgsuXT6ykkiH1uUmA==", + "path": "system.private.datacontractserialization/4.3.0", + "hashPath": "system.private.datacontractserialization.4.3.0.nupkg.sha512" + }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-228FG0jLcIwTVJyz8CLFKueVqQK36ANazUManGaJHkO0icjiIypKW7YLWLIWahyIkdh5M7mV2dJepllLyA1SKg==", + "path": "system.reflection.emit/4.3.0", + "hashPath": "system.reflection.emit.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.ILGeneration/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-59tBslAk9733NXLrUJrwNZEzbMAcu8k344OYo+wfSVygcgZ9lgBdGIzH/nrg3LYhXceynyvTc8t5/GD4Ri0/ng==", + "path": "system.reflection.emit.ilgeneration/4.3.0", + "hashPath": "system.reflection.emit.ilgeneration.4.3.0.nupkg.sha512" + }, + "System.Reflection.Emit.Lightweight/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-oadVHGSMsTmZsAF864QYN1t1QzZjIcuKU3l2S9cZOwDdDueNTrqq1yRj7koFfIGEnKpt6NjpL3rOzRhs4ryOgA==", + "path": "system.reflection.emit.lightweight/4.3.0", + "hashPath": "system.reflection.emit.lightweight.4.3.0.nupkg.sha512" + }, + "System.Reflection.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rJkrJD3kBI5B712aRu4DpSIiHRtr6QlfZSQsb0hYHrDCZORXCFjQfoipo2LaMUHoT9i1B7j7MnfaEKWDFmFQNQ==", + "path": "system.reflection.extensions/4.3.0", + "hashPath": "system.reflection.extensions.4.3.0.nupkg.sha512" + }, + "System.Reflection.Metadata/1.4.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tc2ZyJgweHCLci5oQGuhQn9TD0Ii9DReXkHtZm3aAGp8xe40rpRjiTbMXOtZU+fr0BOQ46goE9+qIqRGjR9wGg==", + "path": "system.reflection.metadata/1.4.1", + "hashPath": "system.reflection.metadata.1.4.1.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Reflection.TypeExtensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7u6ulLcZbyxB5Gq0nMkQttcdBTx57ibzw+4IOXEfR+sXYQoHvjW5LTLyNr8O22UIMrqYbchJQJnos4eooYzYJA==", + "path": "system.reflection.typeextensions/4.3.0", + "hashPath": "system.reflection.typeextensions.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Runtime.Handles/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "path": "system.runtime.handles/4.3.0", + "hashPath": "system.runtime.handles.4.3.0.nupkg.sha512" + }, + "System.Runtime.InteropServices/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "path": "system.runtime.interopservices/4.3.0", + "hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Formatters/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KT591AkTNFOTbhZlaeMVvfax3RqhH1EJlcwF50Wm7sfnBLuHiOeZRRKrr1ns3NESkM20KPZ5Ol/ueMq5vg4QoQ==", + "path": "system.runtime.serialization.formatters/4.3.0", + "hashPath": "system.runtime.serialization.formatters.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Json/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-CpVfOH0M/uZ5PH+M9+Gu56K0j9lJw3M+PKRegTkcrY/stOIvRUeonggxNrfBYLA5WOHL2j15KNJuTuld3x4o9w==", + "path": "system.runtime.serialization.json/4.3.0", + "hashPath": "system.runtime.serialization.json.4.3.0.nupkg.sha512" + }, + "System.Runtime.Serialization.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-2Z5t70a2SwMsfQDp9KOclaZNyQhfIga2gppq9lIUDM1A4ohTshn4JqT7ir8bvIhXgorWKYDAr6rPzEbi/nTGKg==", + "path": "system.runtime.serialization.primitives/4.3.0", + "hashPath": "system.runtime.serialization.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.Cryptography.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "path": "system.security.cryptography.primitives/4.3.0", + "hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512" + }, + "System.Security.SecureString/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-PnXp38O9q/2Oe4iZHMH60kinScv6QiiL2XH54Pj2t0Y6c2zKPEiAZsM/M3wBOHLNTBDFP0zfy13WN2M0qFz5jg==", + "path": "system.security.securestring/4.3.0", + "hashPath": "system.security.securestring.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==", + "path": "system.text.encoding.extensions/4.3.0", + "hashPath": "system.text.encoding.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.RegularExpressions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-RpT2DA+L660cBt1FssIE9CAGpLFdFPuheB7pLpKpn6ZXNby7jDERe8Ua/Ne2xGiwLVG2JOqziiaVCGDon5sKFA==", + "path": "system.text.regularexpressions/4.3.0", + "hashPath": "system.text.regularexpressions.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-npvJkVKl5rKXrtl1Kkm6OhOUaYGEiF9wFbppFRWSMoApKzt2PiPHT2Bb8a5sAWxprvdOAtvaARS9QYMznEUtug==", + "path": "system.threading.tasks.extensions/4.3.0", + "hashPath": "system.threading.tasks.extensions.4.3.0.nupkg.sha512" + }, + "System.Xml.ReaderWriter/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==", + "path": "system.xml.readerwriter/4.3.0", + "hashPath": "system.xml.readerwriter.4.3.0.nupkg.sha512" + }, + "System.Xml.XDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", + "path": "system.xml.xdocument/4.3.0", + "hashPath": "system.xml.xdocument.4.3.0.nupkg.sha512" + }, + "System.Xml.XmlDocument/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", + "path": "system.xml.xmldocument/4.3.0", + "hashPath": "system.xml.xmldocument.4.3.0.nupkg.sha512" + }, + "System.Xml.XmlSerializer/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-MYoTCP7EZ98RrANESW05J5ZwskKDoN0AuZ06ZflnowE50LTpbR5yRg3tHckTVm5j/m47stuGgCrCHWePyHS70Q==", + "path": "system.xml.xmlserializer/4.3.0", + "hashPath": "system.xml.xmlserializer.4.3.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Authentication.dll new file mode 100644 index 0000000000000000000000000000000000000000..b875aab2ac95c5f0bb2804bbdc85d797a0dd4841 GIT binary patch literal 105848 zcmd3P2bdJa)^=5QPfysu&ZgNw*j?DAcV>2BS<;fTU<4He<*FD!6lt9S6^6k@6cqu* zbTMGSoW*cO1x#EN(*;EZMa(FQIbBilf6u9!*#TC+`+d*UsnLRk3w;}0QL;Yz|WtRc|6t{rUGk(m}uM8;N!ue*v-5zm}_pid($6 zSc=0a4!IY3G?6Z|r8uV}u1`ymjmwrrQXEP2|MXXpt~%%N0guecTR-FEb7lZ{nvVJ+ zjoXTPXZ|XLIKDm>kDUl2*9~z&Rh%XJWh4>z1zTn#gc zqAkO@PzpO-=3GRVDkJ22(G}szX0*si5JNP_a4trgQONw^vlKZ7U7TSqDilIm4(cCp zBP4u*;Y5{ibdzORNs}*b9f(d2NiOJWif(8xWC!EWy&bU4SwHyqa017JTDn$|ULw?XmP$_|Yv8T8c65R%3X>TMjW-PSDOmYMSj5S5z2netO zMc@bsffRuwAY`Qo9036asIqVb1T;qxI08a$iolW2wVq>fXv#sAZDTHM+;Tz`4LL!k zKotR}4Mk&Xh!5?s!$V?TDb9#DBCVOSK)oQ9xZD(C{=0MZ!jc3NS5Cu9fS_wW$|u5UHqrh)zDbDmI1c z+5@6yf1YbaJLFm|;-cuHbUqh7XoopZuI2PZhK#IG9~7eW$&rGt0WmIBXMf=sBVBf` zH`hml%8r)g`u8Ej5p9sE*AzJ854p@K(nQb(Ge)w zSWzAFt*9&(K4 zZMuhoqH3RG#;zj;9tKKXR_tNK5D-|0(J*RAwAg7G88idcHzQkE z$hPEb?-U)L7Xh+1Lm0BMqvUvbS4*H1Y3fFw{ta2T_X{|`f}m7sQ(v~Xonw(wU1!x4 zMuN_9>9~jeHBTOP{CJRO8;MD{piH)FtTTL~Uj)s8b07l=m&InG#^m8iA+Sd7LN*m5 zl0AhFG-H1Uli{2IL<0z*7E-AvOEAPDk zK=q9~8Hrg+WnO0rfO`spVs|RSYz&uEam~p$ozrlI6;pq@(-5ermwR@5(@gkLNm?k5 zIOH#8Qp@W6h+Kt8G*4$d9T|)F7!g@qyvN)Vq>;XeDpUszvt(xIKk1J@{xEEJI=Gd- zr06XMKOjs@3*sk(2a%C6i1HPP-3Hw#KVXz%MM9%2!#5bk;ZV4zX*e$E)pbUV5x%;^ zp70`&<`t#JbcI@jvO|@fQ6AfiKwpteqfbWX+0@dT3 zLsd@sG6vMjtKo9d%DJ!ywDNqqc#`MQ1+8qxH5@aeCGcu+b9NGXCJzTsXeTk(^17p( zm}uR>5m+R~jv{abgmx(cM?h$wB5-73ERG5q%r+^M~&7RF&X@Tazupkl%X4Pv`^ zj|@*|D^`4S%OJ>^0}dytYNIB%!#hIH_~i|9(6B%=vC&wmNR`VG5Gqpyj(|{=B5(u* zNK%dA2nd~01df1Eog#1qgqjqABOr7p!k*Y0Xk}Syb|cqpV~R5znnf1<9Sz20XE<=S zDO74W6N$;eBA!)nA`q$IA+3Vrfq6J9A!;g8L%W%DGLP~dsOKH3gr58NRS!9XaG)?8 z;N<}rZBmw#Y6eF@K&L2Ga0CPl07c*k2pHUoz>&05nhJ@^DS-#;5XHlh)N-Vc;lSu< zeO^cDm&b1)yEKv)0Kq)rm#jVZjiANnQ_Endf$(`oqATd|5k>-T#&W?NND@gUuu&33 zYm{A}6x5wcA$}gep7ecO=K3&N=6s7vs|90EWXV{xnTAPgM6xW~*keP}b{zE!pow_gumFU7!SPBe@9W*`DNLT(DG3uS5Tfax6PRImiHP+#}pg?Wdx2NlQ!@ zi*76%FkRd1b4;3|TN}D_=Tj3Qqv28HtAvw0QlM1^McZYY9?3?xhF=c3sf<2tqu( z^o?Hz+H75vl5W}Yr69VOBlxQ_JmMsjl}%;%poVfijw}oz)eKrHvN~2&mzpka(J;Eo zOt+XK&LBunwU-PHeS(VF5Tw@R@heotEStNP`)~-#qu>9yJgmUE=fW^M_+;C(+%>p_ z2c)3KT}?PO91FF#swdk_ne0y~v%C^D{3~-YOuls~cF@@@B8CE9kc z<4B3^LLdq&wcX_$DYM-hD54C(bTBmRXb&d@Db9^ZFw6vu)+$s*7KT`fS>C!VXD2x0 zH-Tlg=}nRX!~e;sBVAy@E!sdAg^*6SmHEQK5VGy)V0-3Jv^UEe?cjB9hUnOMOW&79 zbG+^fP`vS5s7QMzDkr0cJ=?Gyj5phk-%9jwIpp6B`55iNTo2tRq5!Ly#-<&37h_3e zY0(#@MAzkO%IXv)8g|fMcJ_XB+j)oRxgMW4ejCag6X~saa3iB{pi|NYr6|!n_{2|; z&&zcj6M>KPj@jz8}3(Lq|u5$M7h0tl@#HAToPj4@C|keDz#7 zO{=;tR5KR_hv|6@)E<8f{MF5r;;ce6TpxcN7Y7`6cy|0LuwYh)4+1~-H5Grzd4gC` zw{q+^!qJEV)G_`fh;eKh+5t}t8>Y(eq8$upH4;n*zBGWjY%MNE9J_XQ%NBvYmnso$ zy9*OzP|{wmVgX&lJ-mh;D_@lO8-Ft@$yxYCJB~ly?dc*2|b)jf@Qr)i# zQ6=tvIn{Pk)MH!~QQP4@u-tdyR_FqEX;;VE+PGNLTT3&b}d?)cH3Y}-?p?;{6mSJwq<*wxw*sY=0S!A+dtMFPcGyvhN$t#eR}a!`ek z0~3JFH9{QY8cdX%Vq7Cn^a$PYIfmbMUP49Omk~tzna(S?Vt)Z+h`Z27G44ZUDFq&z zZHc8DK~F~R?YT8}i!L(vn)-_m+RI$BBU`}eI2)1VypQH^Uk5srDT+ikreqn_b#@JpoIDYK2;}PcF$mpF z$XFfkL($hLYPhe{C3Y)y77QHG%@louqPF`cQ?k9FyoG4C;kBJBQEZN3$H?sc4o0F~ zVELdV*7+825upBXw`#z8e_I3UWf#)}vvGfJBVhR4cj@YGN2sMa@B+5`9+7FiVf%O= zXD%v`={44(F>&YuUV~CxEF&X6y8q}2#7lUNfY2*N;0Or4Qv{BH0N0_ia0G-tDFR18 z=#e6D3#uX)^-neY6`>fKUj!Bj0m-B z@j2zKm*MUraqPNU_PjzNm9M86I~onQc>dA)M+-z5>S1D&^H?ORZP56a5EC%7im_km z^|@aG<-j?9jjJy-KHKNzP3mqR+wM0Y(G9J-1+0&M3*1c24Zm%$j^^F~!1EZ~9eUY4ArRozS}&IYthaVCdQHq?jwKqIbbV=%r2{PaBMCM4Qc67G|3^;Y1ba={^NO^IY- z;TsHd?u|&#DDjKfaA3WPOU1T8Vr!koVo2i9Ox7_s=~5u&#aV44BEr zj?AxNPo7m9?3#;~Y3rJN64Qa)N7tJ*=q>zSgKGw@SUBRqB(i zQr~Np>hZT$TK`t5C$>txrd8@2tx|t&l^P7RR)>zQQYW-Zy`xp?r>#;WS*?{erB&*s ztx_LrmHKY0)U52*N;{-g>IJP*m$yoNrd8^vtx^keTC2mTR;g23r7mri`p;IWzqd;5 zo7-9)&Tf@@N2}DWtx`R0T9X@Tl{%qS>ikxz54TEvt5vF**IFH_TcsY;D)pLHsXJSx zwh6XYT4Sr!39VAEXqEb}R;fk#t(7*mRq7S3QdhQ0eZ5uc&#h8B7PMA}qgtgdZk77a zR;j`lc|67#QGY;pv9eC;t+VUN#4GY7Ai zDroLHK_}2|W5D9a--_iSo#5iwLx2vPaDErNn}KlbG!$p5$4GtgM9Qzu>o18CX<^YndXk3_O!>B^&BMYoOs=n|ywZjm&J-{l2 z*7#JW8$<;iY!^iW#aVci>%BJHXS&!`N_P{UfKwa1q48N>d&$&p+pw1TzbU64_37{@ z^$DUrx;92AoUX#oVtUlW8jmf8^(Z6belmD3vI6qr*iWOUwR^Xc7SU0!@7f%{mRs)E z_t7?P<%*D{&QGyoYO`8hqs_0{tRgVm}Wq)(+hU%A42~&B&o?dz*89i}_HtwEcXxpU=76 z#95*QTn-)-VLzXYUnA_k2f}eYH3)=fn^A1kms4_nDw&Y!wx#5`e=4ILl4~$*SihIy zT1EDbGGf=kdij)A)G)$vvbs|!E?0IBRB4V#2%6GkS_V-5O;Iw!b zJ4bnMyf)p3GDd z+m=gSzZf^JpCT(ia*cnC80+Iu=%W+q<1?*~RZ1U^bA>7VbA3?iKKfwNUiu))pXr0S zSsz_e?PU@vqqt{Eqb%X~eKmSex`H7WDxpJ`#OUm;9wN1<$F2~Agjl==x2nk}h?!>b zlqR`k9|){2vd%Vkg1CHM-_q+-7S$!or>O9m@2gk{n#Dn>OwFqK1NW!=!+k%*s(mS1 zUT7Q!kxrJSaD*^5OQ%N(li{d+gD{UR@|E;cG-K{+r1QqZlZfoGcTqj+kg>X%Qj&*L z_PJ^0(CGc(@K{~`lB3$fC z^BIz{M5Hq$93fo<1deWrYS>w>cP5I!<1!rm>H_{O!|9LG+eU0~%~PB)6s^Or^{&%o0-pVv7MLUNp~U~a1)Ci8AQ9m?>ho)!61&x$ZT zfDuoW{rpUPMRhrE#M>E|p|cN(GvcCOEId!VRtnnnY4ZDIqFmg`e6 z+R2P9CYguP+z<-d8bY@L_f+KXy%^X~zDQ7Ewqd7^X!;4x#+LGxL9& znZK>c)m2q!gZxetc)9dQzVjw30j=~zg=jN7Fgu8S)p2HQXed?dum)6Mf!A;bK!I4D zkT!yN?nP?mleK{eo(FLvo!V6lxtOn*p$m$^2}idtarZ+&TTZYoKkb|GkGqEt{Hl`+ zFswkX*BOM;!aWT$=2C@*5~97afH(&>Sp%CiU6dK9>tHDknuP1T&L1c*;&HyiC5{1s zN5(EB?Z@`6V%tJ&nD|m`T<2_G^h{su3M!U`w(%)FGUy%|+j77{$yWApDWqhnI=O>U zBA@;8#)lvp-j|GrQ&cI-IS9>)qiun3A!ci8Pqa~`MI#Ew?xA`NLyDreUt3|Z*NsfcnS^7b6 zM$_p)fs2*|+=CI|>2B)0fO`lPTV?Xq#hew07G;1XQCJbNPx_gyIpagZfc4Vq|IhzyfR383RJliu=*m1)lBw3vB0YL_^x) z-~rzX%Ige5xVJ5Rt&9X7!4BGSJQv3x@#uZ_$?~<{Mt@khBpao1=L|>P*hc-rgpGD) z8)f6ma>(BHGc=q&80gJ3G;fBX z?m^Li{LC&h2~LBDzYG6i>)AisiUmti8qsLRqkEVKkhhk60@}U_l~;EuraK<>geNX% zVypq#Om?JdYMy}9*`_C56Hk^`wXm!6GisUbiP4%tt#oX9hGb{6AZ(V9H_i|e$AoL+ zfixP2#WKacZYf8gKu!GoY6-502jgEspLD+lL!sw#PvK%l&obR(sHle1?F3PxC#$Qn{9ce#cZ8;p zBjEPd4L04009dtu4Vm%3Q35I&agRkT3+qnzI7G5dpL;y6`oY)dnGe2DA@!_lswkVU zo^?^5-jBLQsIK2|U9IHPs8Vs3$!9FoDn^aI3&Ch7C^dSnqGP2n)0g3huu^ClXl)}C z)L2$|+)1dGGLNjtz`asVNT<|wGTjq_qBs~uSG4w9YVApgJNc+*#43)+P?k4*xiNP# zh{^G&j!{bQY2b!q3Mh(Blb(%doPWk-GJ|0`m{|CvG0EZ8KS!{&N)nmC5j36l)&}E> zr9D6Id=3osymK92)pO2gIbM`}23I>lNImC-fzfkLBBY;llI}6|1ZM7F{0G*3>@l*d zQ>a}pumlQK_m|8aN0dGGkE9O>3OI!j8il)=3Vzym!(squ*Wq^UIF<}{`0~=!@uIgN zmW~&F!q<}6*K}(qVeYX}rjVd$|X-0e+MUUm^>4-WQGI%aM zov43nVK|QD&|dKZw67lR!7J{Dn>&SKMrcN2&O{TutGs_o1HA=(~HGl|9`aA+V2syi1!sKAQ&ybwVk zh%K=KZ_pd0joq7ZK(C!$ycoA#(xC!ac4pod<=F1IU~rldR2Mq)aEW$se!{qIVR6qR zj-Id}HT!to`5?IGBe;!}SKu)mcwO7QfXE9F6a*q|g8}zKie?2ptYY^fpkS7JFBG(=R^j+NOk1&kqeCbcWu#6FAfKTyrRZe8}WlZ7ZKkTwmv zL(Vjs6}U^n*%g{+Ae+w1;I`Mj1bHmFS&m@81kS;!zI2Hfl~%?*dM5fh016{jj}jbP(YfFO#xB8 zs%g4cf{LtH;X<#z1RTsWk!)XGx$_w`ptJrxl~pY=71isDF9RJX&OF>IdWnsiRp2Qu zup@;*Ptd+LXqg^vThN9LVc{P1z=l2!@|g{?|KHKZ#C})f1{11%FY_Tisne1a$o=ADnqs+?oDyzB%&BGlDTa`yy)izj_2Ug`#R;9*c zffv;d1-+=ZPi4i(xfYqZ-a))p+3iC`-*-?Glb7acH5bkoSZcCu;x#3lM1ps~dm;#6 zOQskIK1}nxW;vI-a5Oq|w#hFD;|+-GAPXys>*-Q~x7_8a?sAH|Hz0Ixq~In5YW;Hx zWc47stjmhE$fEZ(;QykB#aAGbWw7Xwa|^)SqsblJiWp{frpK0|4(@HB*d4*L|;=caoP!tL3b@m>IW zo}_e?CEC|29nslXv|(SFDM|Ms8|~23T*1fKamZ?4k!hLjoRmySa|G3u&Z(=KJ^)Ed zj{6{@PFotoX;~|&dUUU;>X#!5DpImce!q<>Xe4MFQf+4A!e;^!G)bAt)VSFy`Vi!i zaL%xA+iMz9vJJ8Y{$vWt+gZuO!73ULI92p0m`(Q|2y1x9 zhaWy*P9__aeAW|dLedRqh~gModLZFF?-t;+BQ2?Wa6_Don!=ysy-RKuX_Tiq=#}c| zJ_bTo1dHHRh|D}4%EWT6*ylb@kmef9d0sq|qFGQcCttUDzACWN%Hp0-z9rSZgT|%w zrJh+ep$_q1&>A|Q_99Bw%{V5b=Fvkl0DR+au*aW3!A^TLi6^0~NU@iF1!iPwzAxW& zp9DvZuG@$EEOoVQ3=>t8)mr!N^!wypmN(PT!UGlhbsEISxJr4^)J#hNI?S~iqG>7Q ztf2_aE6^hU3_cW|oWw0zi&VOyS>ECt+^0aJjUKu#fk~*CgSCxq7|zq6;*~9|NNhR< z9&nyTFk>V1?L3E=@)d{vRatkX%YtaC=YJ~tRKr;ZcKSAesy$_P|H-AQ^=$>p#acCJ zVyw&|oQ6)I`1n{wfKp z#Mb@^2x&ot7mpOM9ITh{%8&zVv%^btK5YMI)$E(uR2d%vGZrpT=^p!BT$M6Og+!T~ zro2GSyWMa$P)dS|=hFEYIo|!vpu9+&RR%AcxMkdiAzEo(Bw*!4e$@~MLr;B3Pjz0F zmM7=p@w0_T^)}v4dnsL%sfr1yVodjCq+pbJ4IkSTo2>1;0_ry2S2J*z*=4Y@SMuKn zqMW{am7{tgz{O!T87qp)SaFU!^(}b7$~7?Ot6<%4e2}nt?6lj6*qCl?MOw zR*-Wr{M-svCAdCPF77|6=)GE&D$^&19@KK*IS6IaFY_!qAO3g#1p&=uBI?{RX?E^Q z2=>^&Q@3tJa(ol?%c+6m6( zz77G5_t;ox+VRbV-#`#@-bA=pYm}e!i5~q^`ZM^uDt}#u`xfLBH*eWjT8nNvbZ(JH z^Wk61Gu*8ZRkK&kT4a@XOvy3@t%nDo{RX$yeH+;VksKVLM+D1YAFVmnO6!a5c&`m0 z4+Ax2kJ+NMTFDxxdV{nW$E|_g%sNh;X+FW=uf^~|Tuf=(Al!WyL3pyhi!_tl0S)Ip zgvs|Qh4)rGVm0bFkn2Yb0XzM&It{XG@mCx+id5#r2jGZ*h@jd?e1waU_?W{_5IQ>$ zxSt}Rw?sZ8KwCY@oroDB7J%=Qq$E+kP~&i8KanLy;=hzuvbQvPWjR5`;B@@wxXeyL z-ZQ|AA_k?~*I`d1N}%?$CK|JhV%0Vr>M!Q^{jpt?IFl+)jYT|0acV5$af(yb5uZVE zsw(@cFA&Ml^=uvttm`>66j;}mxEOUA%yl6K?(I;0j1|l|5=oF_k79x`66aF%B}AQF zkj-Bbz_%FYff}m!t4K*>r8o8~bI%7|?O)AAz4+9aIv9bz;BH8O0o_2wa5qqd6-Nmf ziepH7Eu^<0>AEVtQCnK{##Ls$;Wmo4*%EV+o}@M)em=#iT8N)VajH7v%@n7`vEHsn z&h+7J-lwGTGL*}`089yN&*0H9_P#I~71z+*auaz7jL<-JAW3xoP)`7d>=M}Su=XDT zm#0U-MI_5gq8BW~lUzs_eBs~{T;Z!|je+*^&v3Amx1;Uwe4DuvoHIe3?w9Bd7GW9* zlH~p!RngI}kd}VSo#o;wH#1QRKI0KA$7ei1BYFJFHmx_*yW%gZ9jPQ1N&u^+tnw#$sUE-L95iUB#YT9IG-4;(-RgFKF@`fldXMfS6|YBc-?@0+KD~Cu(Ya z91B3Z89Hq#y3DzQio9RH>hv@ClK)1K?&V(qLJn5_ctbwBY$aNSJy{|+ z__)traz|*nKF~?7pRZOjz*i>=mt;1_i;_9G+6h8RZk3Wt1g8yx%=#Xn<>rA-a)W%e zlKFgf3UEmla=a*6gsYt(q~vx~a*5!C5TxXefgVO`xh0^J+)}<;$uhorlI46=`e@7X zqGUT0X&qHfQ+9Qb z)@LV>NuSkxwURY_ReSxNIbM`>aJ3VJlpd><9*Lm#`s?FZN!rcuDVZbUWz+&=kuRx% zgel}Ea2bi4Ib4Czd6oF+USNt8bl-u--vT;1;x=5e?C1%0sP87|wlK%=CNObXZY_#V z-ia8$s~ZL~5(MehP1}tC^FgF2B6Wj}VoYNs5pSX<@1iTej+KvH;2N~#-R~jVNKgVc zhUd_APtkbzAEQX;!;z+XNb(wq+mT3b!s2aCZvs;pUMV&b82Ogl1q?36ta|YrpUVo= z4KPCKg6-tp;L-)-Mzb>t-kvlPM8#XkbLhIK2sbI^Ev4E{H;BpcyNx6bTHyw}8&P~8 z3*Tt+XK$~-shtjcRO1R+A*u+xr`{czwwJe>>T`M^F)RkRMa%Ka#a}zNkzuvI1++ZYM>Vkn8Y z_E>md6Y^;tfNm6rP+uzsZ0e0q5~p3<)yt2xB2`MHk)T40D?T%YaGM}_n$riN)0cvN z2=EL{RSqMkrE(7tu#ykb#gkl#i&_W3kMPe(5C>K}bLi^yhae+C+@~Jx3}8UwS}!)q z!dXCT4aVq0gQ-Z}VDca6@Kk##o!d*1miEFbupYKmn}*PvpaZEMp5!B7Ll4Y(6xWb5 z2*f%pQ;F&hCJtu^!t`v1a!9}Mb>dJSOaA~PA6hl|oGNYS*1-GVyCk6re1J8bb+?gN zMa=LGXu#tLi`5ZMMIMzV>*K6XfROR3MSUDgbi4UUP}3sWceX=a4ntiE^@rvnSajqI zdcPMRnv1W4J!6H>^)~69NHMyFmtX1yZ>{3R;3VFZH#yWutmR5Qh0t^kLGkIdH`_>O zD5)p$G*xpLqWaN&DN=^Fq>MJG~t!@7G0Ss~#$T;PZDaVPUnM2+|X$dg=; zsIY6`YL9?xKr^5;qPZiH>WoKairrC&^5Mt>5uvYH9E5A#Kz2za-0&x#rwczg%{LAD zWL@N4bQwGnCFB@$=(4A1LdrEzF333;ajO83wVRkdT zdW+eX#b=Q%p~hqnL!}UhvpvuX3;EG1jGySKn3vE9f!^n3ndy#3LZ2N(a>j5;MCX+q zz9)+)FYnYeK__N;no#o-Nyb+cl84ikmu&fPW)ZRm7yzt+67V!^4qY>53d%=kZ*g&t zq+l!s;}Gx+coZUfB2p!IlH)#c0&+Q`A8m6^ti-u{mv4Z>YXrt^HZO74N4lP}2wAEAV$K&|{ zFoqgkGIUE>AcS>Gb1=2mBCBUvECinvnS>P8+7`0UIRR9%AKFVJyPtKTNZCCVZaOC_ z2C}dA(7}=1Mp_Z0O|*DM8^^-FFmI-fDG0J|YCfW^G*vkkl7gn5M3*_Vnx>{g!I5_# zgES*S31}@{GFnTyQmx&`lE_vwEQ#gARwpBeE&#ULm2^45ND!3_m980<#NsVwNey5n zWqL@NERCy)ud+-*CZ)_4vd=jMR46m0%MZUv>ylcB^C2pobU6vS9Lu_-)jxDuf(vvx zORph~L>UOYT;@-jR^Nxc68lO=OH^kHFnOeRmlvS-PWu(mUajWjDP{T5@(_Zg-}Gvgkc@HQzKPT|h72 zkGW?ciUTB_@d*D{Oi{3%L^Vk2y9gfjT?9|dcM-rA1Y6z4?Rl8wvVs<#uUq>0dV<8N z?9Q270^Oa*G4a@nimywOXiO9KK5KgAtf~6c<1xC0^V zDWC3fJVT~h_?GK0b@rE!}T)Y(H((@Omj~lX8cfJc~plLS^f?HyJaJN(1l8WAAeX| zi?8tK1rs*M_!$J0#p~`@L5H2wcS{8IDVC4?E(B&(&hOXPYFr_b^+8u5Mqp)5KU-Yd zVRsLF>5s#|RZ#r#_V@HC5VLwx>hAWBL~QX?2MT}Va99P!i#XiT{vGh2&EX18J+?zl zl`W1Qu(c*2evjT*pDWHAu_$bdEk#>vZ1JGEwI*Nms(JVTTe#Lp+ZGesQ;F>nFBUg8 zRp8rIJ+rsglq-sgmh~+YFLmzSwM^Vw_XBG3eP@#SG3sWEo6V7Sd(^NiO8n3w z$`o^VkH^FX@O8H6R8N$?WfVqPGZVmXi}4Nj54FW1or(TI_suA4as$QJ6;b@`4)>7u zkXj}Z6+hIMi32_qkN;CZ!|Ehc!VMN7L7eLx+B zJ(y=B^X#a;r$?^XR<XHobC=eo3!;sdyK7qow~n=P(~CD`J=hO(Z}MwdGD z`<`}JRomi~_7vuONGCs6l1?tK@gP2yO0k#;zrL5raszRb%)``Mndu#@0F{~wD zyxyDokqyj1Xp7IH zq~WW%M`qVO37wo3CC!{&N8vRbe**D*@pA*^daIPev-?oqC!$mbvz+QMtQVE?LlyN% z8?dCySYaTYP#99fXsgdgT8@Kn?9u&Vck9ucpzv_Or7{y`35Tbm^ z{k42J^}>i* z+89W+eU)|c8tPvqR%7hgBAYdKzMpL11@8CrIDFo$?w2bTu$}w?+kky`+FCPTzK7eH zbHxw1m$$`^cGQZc0m^%Qj~$iyaGj*31>HzXPjasEe6n+I<2^m9#HLCru@l=#n*y?s zaw zM5jgJN$~xCMmZ5m^I(1=&d0hEYJ;yB%mZ57olsCziJMWluZfwg}A@S997d&Ub;h zfo1-Ry^;RnB5^aPO@pNVVv)Fu)4t%eCHQ|V43z#p#z?hXDjt$%Wu6#j6X)gPNzS*C zWnLwoV)O~4tHm>nDp}^=#k!1q%fxyvVF1_cTCpJ`ZMoRY`BeLE5?dHuix!QMw}`hn zUtwn|{T{K6(ML6e9>7UZ($WP$*T_f2$DA+3b@_+b!3f(0;9Mm>%P8+j@j0jUWo@3-QxLY8!gwtLSKQQWJ66Xf-Q%1fQ#V;8pyd-|*v;?=|WwD3R zLPoD+Nk=m8X0%lpjGklkJ~rVf4UdXZ`e(QkkmBoxONuJR{k}VVm11J;<=Cp|n;ntk znxp=R>?vk+yt-&y^NgYhtS8!r!kgLza-^7_OYsZADaHLcS0mS^9EyLDeJ!Mg8g4-N zY1bP-AK7L_(GksahDT&4@#c`<5Pma|;(i~6uQwiNSmKZHdTEIswGmkn} zu{av74vKLDRzru=ODKNPpiMbJabTY}b5fL@O;14%(WMwa^2MSt%`19FbH+5=-J&@S zVq|sP9~28aZ!QXoFUz-r^N{lG2xpaliZIgj9m2|{Uy&<@vc@&vTuI^M(D1nC(H$x5 zg;0u?7D=(TyHza3^4uHHx&gg&ipMl(Bd-)c;)o_-47_fhyxz-vm;wLSIV`-7=glf4wLL@R93mfP|XtjHGI z5lYcm<~40mk5GzISd=Xa5&l;aGC3Q|{)SrBBb1^=vMs*vJvmid@riM2aYqr1#EVTa zV&K`um7=Ws9E5AQ#P54w49+D(B64q@+J?oDxjJ`gaZmA@=PG=tdZ@S-;lc7&@K=@} zgz)QjIS6;v-p4!-A$2z%NTlrHynfH2?WY&LnL`pDV+k)76^qBki$%6bz&5a!gPmaI z1DnB$6neA8g$>{5QvFv$GHV;-Ixkm>N33TcxzSvYaI@7TPm0-)AjLz-D}~jI!r`4? zLh5*?mq2oBsb_cE2%b?{RMz*s-#{t9RFUR0<0~58<`!*7ogWvsqt34y7C67}{SiW? z=gl>rA-;E=i$I||OK~Uu=QJq}_I$~8{ton;xs*h`i8Xl~qlt9#TZV+T+-fhvZ`oQ@ zs~b&f>1OMcyq2;K{Zq~so=g6eXJ2Vl?j`=!>2kmCO?CM5(pB#ePiF62Ws%)dZAVvN zI>0^kM86D4@t{T{feevT$!Wf&BfKF~lrmaSGNVT}P`yeM8;goU@TQD*$d}rpZ^Zyc z>w$`Z#;bf{WmRd&BhFF?QYu1Tu}pD_d~ZAH7h4qaUFX{^vcxZn)Ayc-kgTG*Eb#5} zOW*R_AT-?I(SGPP`O4Ij&wwh=%~^1kwrjJjZUcDjrC`DjojKip#B==`*&kK zI$Wa;{yd;VHCos)Zsdt^8r{_K?yNj_eO?*3xvaPfmiUpKxO!ahC!)_bT$Joes-PGDVrMtjl`k_|;QPIIqcK%% z)@cuxQrbHjeGNOCDn8QaIY!@TG`+KBO%?xENRAnrFQK+K%mw>EaBXwsm-)oR|n=C9m4|R%oWE zOrx9SIijA?I#Jv4!_XXYq(*~le-1T^GZm+gT02k7(r7t8a4}DurxCT`Jh4!tIh}tG zohPo)=)wHmV!pUeqc!Tt}hU687<&iUm!YZM76#^)M-?O7A+7xG-^cJ0x>|N!#j_W z7m5)Y9pBj_E)<7pG#zOdiK8@{gS3mp@ftl{Hb!17PSNPqG7nC*o~aROVxgF&5ouzf zI8P(e#3f>(Mx=>L#1$HCYin7H#C436UKWXW7%9Ch5<4^^y(|(1*eOswErDtnDZMNb zeHpD6G#VF)0UFUry;2O$$alRM#YkEC^9q<@xRq=W9fM z;y&>eqj_THu%eQcqOhK1&J)W9v@3Z?%+RR1U2VyuVv9x(3}`G_g&hFJc^uN75Lau| zZ+O3wHR3jn4j4YH$&2D5jf$LON?sD5X=FO5muwWP@w|&T3!L*x-k|>xg3(U}SC+gj zMl;$WsqOEGqZp~0y(gwIx>{_gEegFSF4yQ*MmMC9;dxIyt@4SQqU%cD7bQKYgr#C> z?>kC97KPXqC-ivl2TMK`$782}(E7-eC0~eT8rA1NTe3@R;AvoiuV=w-@uk?L(ZGT{ zptm*p?ttCc+y77_@5nr$FEsjh@ow=o)@oG30-rCG2lSgpFO1kNzQI?gRN6Zu@_=$Q z3L@XPqDZ3-#d$#O8SU_o>D}M|ov6`i$M$}yBtBuZL-y_a1<-eC^dpejhoq9QiCCt$ps+W) z^cR&4`L@|>j9=5JySIJm?`d?eT~~_DAO4|)uK2Gp(}?P6WuPB3P#j2vGY zg@@xsI@yWautO4Owj8Muakh~cX+)es`81<>qGEWD(gL}W(R^`2Ro~JgS=N`Tru0%Q zs~9Q06wCU((oRXEA*IFgjx;)`v{e2pjSep@lbPXIu=8}Fw={ac=A6<>`2izUmrm)nM@G&sZ9xZ(Tv%Eye`3!0Y=hNu zkCNiMtKm|lVWSSet9@^jUj@{l(Ff(%0bw(a(|&HVqO?XHrcpdV=wywCjY(`ZwO&?_3vsU`H0 zMkDeG{i4wxmeOXBs^?5jtJWyYHS4R<9V~N z#i+AJKDO5W8tvrP9-+|#y{Ohx87=Td%5MicQ=@+64+70*v_n2#JXv&>^xu)u-QeTJ zPnOooE7E9nc2wT0(Gx@Co_e`WqZu{pO1sEz!&JVq-p6>m%4r(i0+|hRjYcJ*$vA=X zlSUi*FO)r`HC*MpAM~xqa{k3-aWkt(PdNQ7L5`>Q)MCFZqLJKc*mEWCO2wyVC_j|t`tWp zDSeBkm7OW?)##p@nPqV~c|4^lEzOjdq|v!$Gv&hy`AVxVEIV61sZqFkG0-}VF6uc( zo+Dq@=&GI`agN-=XdTbRv!pXYmENavaals1#b}58v80!nBQIv8=G!^)e$Dy3agBeD zT&0ljy#7~~&6Q7Ubb0@qfHp8vwLVw+j;0dU%Q1uQD?3+SuhFDIkCn}nZ6~U<2Be)Q z=cLh7W#`LPX|$nifxP~2igN(+T`X4}tI*kl-Yi=vUr3|(%NEJP<0$QFaecSX%a+KC z810ZpMt&%}Om5TY*hr;VD!U#}ob$vXeSa;xT+U&%L-y)slwU5lXf(N7rMN;mlZbPN z%pNpZTqy^nQ68R_9juT)-rryTcX_@}yRu&%knaSQuXIqJ_`6)jNa=H#d`_kLOYO&f z%j8QMb+%*K%j9N8q`^@6HFD62B!y62=vsNLLSjV!_T|^fRgBj09^m!zV@7I!aJl?a zAueIL{81w+VY$pYiDb^>719l|o)MK$U4DZcnnv~IH_0iAQ!J^>6D#DEjMj@ox=L}2 zT&vTv!tKj%kiL zE!`>4V5I7Kr<||SaL3TI{7$)u(G_A%Q9qz>G@_l-yX2rLB;^Y1oAxWeODx@b;sII9=mWV5yRQ$*s7AL9b%1_Q z$R8iP8|XKk_S694G^di35B!e~?gf;sko>ay5jhXaxJC^<4ni8er=2SAL3x!Or%`x>j{5{+obY?ZuDBibujC0A%fyCbXQgN)|+ zehWB2Wz(pH9e&#LSS33%QZ-v8yD*wBUX$2Mki*hx$CW=JC#if~mo@Sdg?M*ztz4!N z)oiW2TO%rct$a))s@YokrbblyTKN$pRr*@#JDqB_-gi&+spV^BmPW5up8=Gk(b|4X zbDolg8hu-RcKK5>q)}l_5~!5X0^g>F^UI%>m5k>3-fy@VD5{WnuU{UXho8?#+2^zJ zGL?_}=vldp(R{pZc4_&u@+OVO%Bz6x*o*T4oi@lI&eeORtugVP?(LM7f`3<9W@`A!V@wzNLgYvDD zw-wgqZI%~n^k`vo-kWkYqj}X?I%vdmN|Y(XP?N9jFiqkkx@qTu{#$i`9zM_=q+Ps z=_hjDUYr-}w8!Lw<)6sq8EHG@Z8|MtJXXF#ZeyhM`KcUsHkGdQ`Kdgdkt+Q&c{HQ> zA|ICgnVg!Dwo{&|(;hJjvUbXa8daEMvObr$WN>~V@6l;D7|)h}Azx*rTDwcWox!pi=Po&ZR!cp1$x}2UoA^@po86N3r94<8O8ZJ)lxRu&N-oog(!Q3R zk}YXp%kCOc+Bfo)b6e8rBrm?zRo@bR(?IdRS5Y{qhRy^ZS4i>ueH5QqOY!MLDL&ny zc=yWxUbw29_+LaWLk#VXj{%Ei5xj{cwn9E;%RD+OH>I?NXP}>WZfr+9impohXb4Go ze-NeqJdjc;uZLyYEYmAS7vW4a&H|9M|4n{6JEt`B|8w0Y)*8@Q0d$Thn%ybxhi?Bn zeK8c8G;zA2r7tqITI$Qov$!wd7rN}L^UT!u8Y#7f2X)9#^(LL~pg2i3ai)XH%IrZ4 zwqc5$;BV>EygX$CEfnI(Eb-4|w!t3Xf8U1pxA{yx{BKy}{v|4k(xi(2+1UJ_jkwHS zrqPviGpyH(K&$^6YQnn4p-7x~YP~oAQ%=b`mpHpba!R|A4j;yIEh#RBS687SCXA%GnsHQ} zDW1xu_%G_TuLLz`W$Nu0Xvq){_ouuqag+aps7#8A?;SqJdB0^nXU0iRigO_Q)twm> zmHJ$Wcs@eE8zKU)XbLa;oIj(hTxz`dxTPw7EoQe=S&ApKb^n?F$;9i|HFx7=A1KNvkjJJGlqpA*I31GJ zjF6JQ87mWuf5s+eoXOadbv!`Mycd2Y5k*0SNtlT>1ST#9#P&&*_f)Qe?Nbv=mTwP z@5kshQ=G=_-OXi}1^~H)98@tr(3*O^?gb z*s*#B{5X});Z_bWHb}x<2Hg?eWzZe>CQv4etq9>|5l#~;O^VMG7qz`aG+6!nEv0Yu z47d+(u21i?7V&FpaMI1H8TgVIWmM*G6N8PVBR&+fxQ3&w=zvefL~(J^58@f7Y!bA8 zbQ0p(a+9DFYhx@rS2>H%Y>l!$8yS(`A~jEpvW^>BFDF=3ACl8uj{T&lMr8AHAObaH`|_$u)cDJJk$C=5rcMZEwZjftxJdAjK^a;@E1b#N3z@NtP8C?Hqd>TI}`+ISs&009% z2e}kABrBwo{L}PVIy%WejZfLlv%VTxY)r%Hxb_I?oZk#_L&Xo^r!)V9jXi_<8Bsxd zGSm3v|1>_gH$m17J>9s*`Vc2MZ-)GHkV@|YOcS&(coOv4Y>bk(MQ$`U$oo3q1DRJ> zbQ3$pu98)dMmt02(MR` z&SlX_^6U8w`SpBy{CYk&{;e2ORcu}ZYsteKAK$boH#@P$Iy(W}b==B;Q;H*qgyX3L#OooYT~ol|w8 z`3vHc#ZLL6y~KQk+p?P5vX0v_*!Z;URkO*UXKG|2c-INxJ0|geWNu~3DC;!X&$p8H zBuB}W=-+SU<=CzKR+0sND;IacEB{6(#Dhjv35C~$DD2fhVNcM>a!Re8EUnb|4kz$t z$!R!0^ergo7}7(bpTnJU*2vwc?Zv(mt(}t2^aepc1@TYpGpte8`y+>=b!Xen*2~^rSmjJP~e>3Pxqhc!!nTK5X_`Ukvj)k2ySAG4N58A~cZvKp8| z@vrgW0!nT2{8(mqnmnKPFSQ1HZY&uqn+$%cY0%TmQJ$N6b@J?D34^WSWj#HEt%rw< zM)>&fiJrlp^FzhZCp}ATGUyp^Y&N*!)4sF?J1F z=9%Pqr|KV`QN}GJ)*vh!@f^Y*%U(oy8JX>pmQ*4fp z=J;1QO*P8sk8@L_jE#kxJiqByQ(0$vPHOwU$AWEq<;j+0IfaO4%eDy1?OE)#Iw6iX zbL5JeW@Db`^De{es3ad1m7^=y3O}cgvda67w*B&mu4572J{&6!ruRdbEr-eX+AXw) zNn_}h2+!@b!u~*X_%3p?2csoAMb&cn0 ze~I@4ku{_v!qAXf?>zZOQCEc53~%y&fO-x@xVY*7uf_HBn`Hx!!8>LPhOZSC*Y51}c|5~xt^Jvv_?@3(BNnDC#jY;ENoKQcBYjP4xqw$XS8LYR5t%tO0Dqr%_ z*x!iwWdnDMX)IwHOPIm&89GinpT=^|^bAK&odh{wd8TnVgTq_7Hw(G%ei5GsN_|_! z#DVR7b0qnz^CkJKMUwngQ2vThSt@UWryXVe)O3)qRQ?*GFYQ|cJ=@gcK(n@sZ9eo)>qg9s#GpQg z|4L{nTV9X(dWg7{?dlh?p{CwH!K4%a6HNA3^6M`B{r55_jo-2U4f69YasMQ?mPsDG zTVf8jfA4ZRD0F7*5pYVelv7u8{9=v|HpGaR{DVz;I=|97vEw`bdGf1~yZm>Vr;Yp` zVWjeR|I5t3nZs>5yxRW*-U^&jctl{9_^I^Rz{{|%AMo7kxRFx>+vID*;(^Ufd70z$ zUmvZw4&3SbUoW@4Rd)NnZ0IUr>si*^&tb1x}yIGq|%Oc zA*WW_n+6Tc+KRTHlGTq(=_lSQ`Fj@mjav|o?|(PKqbkRFXBnqpbT9RMG33Flwg%0c z-?GMj;qY7W(~wPB|A)Odfs?AZ_Q&hqo_*BFN;!~o=7-OPOO``t4-&6PY zz1`EJn3vyszt8{kL+5lYr?yk4PMtbcw+gyS#evdSJTH%Wsq`byH;Z2{eb;m9jCTQV zsU8Sw&l?4;$wR4lkBo@RJSz}#kBpalWRzXzIa)&Mrhi&`nP)8AJ3Zey=Hud>p4iOF zvYnn)!;dJt3MFn(4;q&jAI*>{OUsJ$ZtzW05f4upjFNUeXe=KdDf>um9e!WYM{4`< z1l;WL$~{5ZpLW zV%h2$CQr~@Rq$}#-m)1cPvKluFmT?TaNl>tgJqm$p2-_8b(jqJQrT=kLoGDP57$bG zdkg+C@{_W?1y`5kmoF4b?ky-DQ35xm@iLQq-fU8S-X$aAvit?(MwjoFZ=eGCClpSE zo8P1^_kSEX^uPhIkFIRuJd@b<* zlpiwr4O+0xN3r8>kd= z`$|F7ys&l%!uhpV%H&*=GC9|rBlzbC{yBnwp5UJY{1x7F1phq2KTq&47W|6^|6;+v zLhvsJ{#U&h3;q>?e}&-h7X00UzuV+jTDv9HZmG|1!QWp%oq4TEt{WxX#gHTOMj6Av zX`_T2ua|tTH~GcZ^^(K&$l2dpO}A}&{na~xM1FUaC2?4U;67R81Lg1`^~)#T^0L{ z$Dy(BhsHk3^MZO};g=CoKI1~bK{LKu!P)a073A%!DrR_g4&=PaoxBH4&eW%Ps0Ti1 za=t#rBl@0K%FP1#75S%Ln=L##IuQnVke;1tCe$86N=-Fg`)Z zWWzJSi!*rr0B0K~0M0kQ1h~+66mYFkGSI6ok??B)i`1>g*nvej=ivvu2RRhs+(R93 zUKE_S0Zlc>GaWaGg$3>ftit+rEO3_R&jgGBR;g_TV*$?>xJ%$w0q68Rej;c$WV0s{iO1@;KsBk)>*j|ki+@Ss3tG6$c);R5FiTqiJM zKB|%Y1V#{2GqOkAJK?^2#I@qy3-_-^>=XBX&o9{OJZZJS`2y<&t`is#7|eT1 z)s6_}{T28@3F#4dt-yT(UlC~JOKt+|1qK8L1@;KMPT->gUlsUf{@>A$#RY^T3z)+W zfqMjACvcy@M+Lqj@Ku3EA@Mx|hYPG1*dQ<{aEHKyg=edUL-E2D@J9-45V)@BY<1hv zptyGk+#~QhfsY7$RNz5@uL@MfQm#Osz>xyy3v3X$PGC@Ax4<0&uM_yF!1*Q2XPv-q zfqMjAEASD42L-B9Vj2Q{0*4EnFL0f}Zh?CQJ|gg-KvgDbH7uvwCvd*NbppEu?h*Ki zz=Hynm-zDqt`j)CiXjTeKah{W`2yDo>=w93;3EPL3RD9GU*P;BpHW8+dt?kl4hmGq zNvy#60@n%bKJFQ{X_y+vST*hemMHG|0!P(&Ab%dIVeF_{an};(pg`Xwy5|dAC$L-K z9)XVtJSfmtCzt})3G5cQN1&P}brZO5#xv@fVcmd@zCD1C_#OeAHhkU8XVh)O*Ue%+ z>*h)w<`MelONhWd0uKuOL>*(yG`1VRFj~!v%zmDrXOriLp1*iL^pxZc%^Q<9Id6a7 zKk|z6+wynj-;)1P{+xm(n4gmcw-y8nw-;Victhbsh0hnhQ}|(Fpy+2s&ldf$=r2W6 zinkVDT>Nmcr{sqvKP!2qq_gzfr9UbCuykZuP1%aF@08tJ_GsC=W##2{<&EX1m7iJO zQNFYMPvsN6>%7-_ANM}xea>50(OI#l;=2`hR6JNw-tWSGclP_V-@;1X&yx=;aslk> zMUa@q_+q*o|5d2|u=oywwRae1o>6d(#uc;UU{Rd_dn%>#M1*!B^elCZ+6F7{mto=U zfrWQFUK`s1tn+|%0W7!|!FqeCs#BLMrS4zMU4(0jo(24KKH;hbgx4-T0GJ$0_tav- z>qq_$@K+=0UNrC(z`YH>Ps6c-Y0P*FAwNEnI7(7IEjf3Oc@H5PN4pPJ5ofnx>hP7v zG9)zSZ-CtbpFWCiH|D`1PCk8=^1#ubAXRIB=2p6tuxt=v#S+3(jv#z|x@QRLIhpmJ zTveWSPncH)_ieR<0pCA*DB#~KMgeXqAw0bw;rA*D$4?+UZ6=|&l<-uE^^5z7c??-O zn6Td{!Vl&Wo^dqcU4nB?f4a*g=QRTTlEczt89uU%aD5G7QxTze0O3<32;XcVRMmvj zjwD>?Cwy)YVfR?VjnY7|8 z3AtiEV+TlE&X-nfk~$xl!|;eu=1&r`M_Tu@Vut@%+>@lNqb2swf>|_?u_sFXj}-Wn z#O6zF8wKY|fi(iV1^!xKg}^eQ(%VwX-P4%c{G<7*pyq)u*G_`_=-O$3{?W4m_f928 zeRIwNxVOw%0XVK;O&U(FIu&kjJvn4q{kkl-=48#QZr)R+94T%N*O;3BHKvYzdUObR z{&@D8fP;_e0DP@>Gj0s^;6D>1ouj@CJ3R(Qdm-FjxsR&?koP0uh6U`Ql)_zwcmvX) z9PR;-3kG(6D&Rf>@do5VCESA%k2_ERO?4FF4d`$K;U0l_1F~We+{Yr`fP6R-?#YPf zE0EQIQz2nYH4Re5#9Mus^6jRCidPo0ltJa`;CzFraA;!Z>rxz z(wpjae64S)H}LJfiJg(1fPcVu@uqr9T>|(=^)!zT8IJ-M8b1XrGJXzNZ0rXt zF@6D9YCH*8W;_L0jy*Jt5#t%a3gbDze#Y~FmDpXu7%_ee*xz^&aDeeL;6URQz$1)T z0S6g}00$ed10HF-33!z87U0pw+kiuicL1xg7l(5_#$VBQ!vIY+%XlB|*??GU86N=7 zH9kVfJU~;eGX4(tiGbjI<72p+0C9T7_!RC_0Zmws4a3CUYaYW;n*hO$Mn2qI0Zny* zQ3!aMQ4DywQ3`mKQ4aVmqXO_cqZ06Xqd(wxje&qS;6fO1opB`KO~%oHw;9!dw;RI% z?=Xe~-f4^kyvrC3c(*YIW!(d4VkdYk;P(yQGV=pK6YI$daNh?wK@If`#|ZX$MgorT zj0PO#83TBXXDr~co^gQ3c_u)g@B`DYYJllilYr@0lY!}1Q-SGM(}C$%Gl4l<-Q$@C z_f&RHmlWSrd{6P4#gj|slq@U>m0Vu3yX20Nzn2_U`lZqbN?XdFD0{B#&9eW(o6AGX zZ!dqK{L}IQ-g(|7-p$@~z4v%u_s*?2vErVJmn+_=__X5Get~{@-Q4dl!XJNe&2HuF z<9Kes`S)_=bvWyzW9`s4DzCx$lkBj-EQWbR&UfPUhf;4;-i?z+nfbj@d6A?oVTASX z-OBeQ%wq@O_l?SrF_&eh-HMY5+2!6MY3=ZFIJ0#e^wn{g!^UG?nt(r^Aee}H)nJaQ z#or{%KfF$OGXAFEZz}$#;cq(TD)!|}qtp_dx#Fw26*zN&+m6JahuMbV zd6*j*uAmW*olpN27T!0l-+!}y|K0lCZT+5Z==@r&-%jgyi~K5epUM27i&(!8S-(HB ze)n0wk6ORKHY*C2V@~)o{w~Ddy=sxU**M<3&^Un84hPg%@wdzPa{e{Ock>@L7Ma%= z-hwxc-36n~11eySEBY#aFEj=f|H6zEziC{6-vjD?^R?oy8p}(5jNb?GcckaF;?bTN zrK3ITOGlffWuwjG$}TjHE4#$AyX-B`0aczi+FPA>l6OMhRo?QvN4#$uAA3*Bn^JLF z-l-M$s+;lWEjTUj-HIFY=JmTVucO~C)NfzjxBLAf?-~3Zg8zMlkEpycZ*t{nd3$g% zcoe)D1y!Tqj40MLBcRzt!TV8YHBp=`i9(}^LhFfwW1`@gsCBaCC}=T9LDLxu4jKyX z84B(h3U0Xz_vqcrK{I=9u%%^TB-s%SbTvc+$z)wkOHGc@+MJ=2By>hgi#Qr%kyIoQ zjhq#(KdUnlZVD%pk$7zGdMnx=OvMvvUv{}VtE|e@*5xeLE_E^;>1@T9oo&v*sdfg_ z=&0}Lh<34F;`0aXYSvB{w5%%S44gE>&QTlUfmkritaW@=RuZ@>5f6e; zOH-+i)!|K@;bf{l*%b>i5$d+GBOF^CPc*d!65-J5a3ExbuMW4zH-{G|;_c1xjp0~B zAlN45Ajy(&sy@gpCFbNvs;wcMNJTb8f~Zqwwu`m~qn*jf=J3ghNII@58V+|fZdlzJ zi{bY3Wr(#BEf1uEZBkNWD%@@b>ZYzttPX>Ng6=*?RUC#`7)S*g;?Zb0n6g*`(dnLp zdwHZaf%-LtQz_oLp3%%T$#9~+H5^N2l-UrCI6-q`Law=B#mOzTuB^q!U<7^!sS%r_ z1_;&dbIL-{+)l|Yo6~BiwA8GtRf{`gLHsl>igmV!6M^;7FnkU1*oH_e#zd$&kla|m zB@jtjG0Ow7Kx;VE6i#f81jDY5TM$Sx<%yl)PX00-e(HsOa5Os9gpb^_6xL#h#k=W)qxD}-| zhUQLz_)xQP6@NHsxf9`3qRVnibA;2^BqDQ>3vk&%lXOQ+vMDx6oe=I4;;afp66;XZ z!idl^km!OB9TeRg`;CL$eL6sTmTH_*{xS0))wz)240 zWC3TV{#m*HOppS8kk!JqhJeOSds2FoSluX7i&L}qq=DBz$is>B- zff-Iji?j1Vc* zJKP>^y<_YV)jKAwMfWPj7L&cxVEPO94iz5JnsTqaB$zGjoeZi$3eqZfq~zJ$)sZ6| z*ftW&9R>O>2ycida-4qc>ojO2z1d2<9BYwu_dR| z4hW;pXmn-bw)a)HB?w6_#qL2fHl0njy+{bknL85-uz*Bx`632RAwhYYqd! znlL1zjFjvm%$;0kV*qExqv+L8h__?~qrg6bvvNzfflSXhdr7GaOGjs9s3)rpai^M6 zd}A`%8BREXNRvf13Opy?7QrghuA#7e5CeyvNn?;Ek&q~rQc8Vi2n%#jen~i$89?rX z@<(*7DO2UhL}{SmB&u~miD{Cxm6T+2tEfY157=5XVwxhfGVNBSRl*Kr;foT9c!J9g z$&a&SC#Gb0sk^$oQqg2nrJzOnal}$~4zAR8P`lM!D734o!YX7dx~ytyi+4stA|J6x z7G9vDOFI_X%p#2TLnB6wY3$N|QnXRqyrct#L3EU?anlwtF6L6u|HC29-Y&Gv!PSJd zk~_9hR$MN0$ByL+%w>X8DW_~MQCTcz+PJPB*q0gWdkx#2W9(LMnmo($VV(`1Y27G z#3>d_$0d~_r6ma6E29xcD6u9=AXvlkNHZP9PB+x$Z-{qvNvaNAS>ZDdFO_b-_|lEj zaXJSUp9GIu#WNp?rpd%nz|+C#gtU8ujmruy!CF2hDe1FDiCZE_oECOaA+j+S#*z|* zCWJbJvZhOm!Nw2n!PD^jnS?v@R1hMk+3k z1QYROd_&3)*_85YW!2(OC4IXr5(Ba0?d$p5C3$1Awdwk81dSTK1t_h zv6V9s>%Ne9;5CXQPIZZ2EJM)6k*^h!BIQnQ3n$!NDqP@4-?gL6q&VU+f2Pbu=oe2@ zzdo6=*5%9=8R$N>R#QR`%#nI+1q(06o5*%Sb9^MY=H*s4UhJ!0V?N6}KG&S}r;a4-xxnD%4v0^c@SJJXzBJHxb}tqLTpJTVSM zt3ro{6{LczN2FdB_q&7jyzUNhE5}*;X`De_qcuBLbo=Z;Ozhmbf@O;Pa`BkEC}ijM z2A!Qdp$f?58b+LqVi|tg4xLp9;@SML;=I{P2d5Vp2Cc0wwI~z;!z@U|w}_@7^3+Wh z_gteRXV0x|0hci^_PU;sZJTE1b|Qs$2g*yxMgUTT>QmUoS>K7YG$6Tr+$kV}>;$Bd z7KYb%a&ZrtO?j3pl4^~UPgZlB2-M`HNHUUvO!Bv{k9IXjQtmu@O*Bp}*!4s$u^H={ zX`I;Olh~~i_IARW0|`)RaRM_QR;?SI2)k)ZBOyprCw$RX*rB;;?gZKOq>6A-IFUPY zVK{9jcT#Hl3;VBzS$(Uxl1{vxGn6gr2fZVx1SKM^ZLTPctU!BxA`$4yg^q2+m@C4X z&sh(Yy*|RdMkg5whN7{b=nh@bCH#stNGDbcG5t$clj&LO*V^e~bP$ZTb!+#NT0a}q z7~2rf5$q0H4og~qQya(ViF!BG9j{j&x;!Wx+Oe66g6h3ZPRXN%hm2KNplqQfE5TT5 zLFa}I*g?Sg2yTq(lM)!4;BCw8tTV742!*$<#K-a-9l+%_nYF28Psod-fmRiOF+dvv zR8VXk%vko+M8t3j538&#E%inN0~W=CaR}sAg$25HV1!xbXIj)4)tQv#m@B>2pMHxC z8N-zWcdDmO)_ZYkQ8F0l2(MxRGIns$X|j<(t9NGywjV?ZBbpWA4njR_O}jox z9A_WNWyqCMEj8FN@9OD0+vqE};4LwU=rqii`bh6kjvZ@bgh&a!Z*AkF;thdlbUhlP zYrw@?1C3(f5y(3(VwYhz1`GEHHXAJurx6`W9IdX~NRF>XE2K%mY_arD%hws>9*-2s zBL^@g$Nwt(v0Cl?=l$F#7zr7?A|d& zi;g&s7mDa1MJp8BZp|6iq@WQRWkgYP(te(TsFzJn?Ozyo>${Sldviyclo8;x3a4V6 zT_7r_nKoP%>=n}J8pcwT+b`_w40Dy)8aHNEOnT0Aoy z-atk!nA$9A+hSe^w4@}Q)Ty_2xby(EJ&du|A5`wrx*twdi2hPLdZ5L%2vzonkCJVW=Hr1&&)GVdS_F0S0CDHhL zZky{YY?%w0VufItsgLPF((#n0<f9Hs4KA1S{3RLumDW#7Ba>?R$?j3 z@?kd|W6e5F>FRtcUXF=T+q7JMJy+l$8CP7caM%)DJ~HNtxXe`8e1ifP)5kU`fY3NF zns8I9WmP<>Jxvgp!M2sMp`aR9rZ*21CwDCe!XYQL9*4J_Wh!zz43x!ks>8_xEZWFJ z72JVv=Z*06i3tZA4Mc=&ZaRT5C3L!LW$kCI>`blPAlnrVsvgC9=gkS_=yLh2^xT_lwls1b&=PTOwZ>A9GEyYnxY@D^tOY;9%ufv`bP0N2e|exoFJWzQ0?pgc;$)7>+=9`|92*hp(WYz~`X#UdN=w2z zVt{i>326}Xv_u<3N32yZuNC>!a_YldsIeULkVHbBbO=RkW(WsfW=QsIo*4_Ga#ft3 z>oa3X^UM&eeX~MRoXpcTlJR8O!7~D_)74l`a+z!Uu+FfZjV{3l)0;kwjiqJ^OHIpT zoy*dTSG8V@20|5kai^ILl$QAliv&nvtjB086Fi1nUYVU7Z%b5T371Lzxj&FzwZcvu zfwV$MOS|J{4_X_#7|x&rOSbn{tRow;t8Hz$s4&bNauC%H(DR_}v#gQi1q@3V2)U?7 z-R*^_9g2k-R9}aG>~Kq%=s82wbUUWa$}fG`EfmJlA_@>OM5@f$5ffV~!EX{0u-xE? z2v7KOUbJKxqj3y^KLM-=5>y5(7wd%1aPO&~jKj1rWeGW~<+epLJH{^Jf)M<02((qWH)&%?Oq;-PR}O9Qmazw z+AoX*U}a9?m{C%!Z_t0^*ku#<@<=p_-4q>QHN!UAi8>dzjfqK{7DRw>EC{cMVfZ;)rQ}eTS>pY$W21z(6|q_rEw!E3}PSIlNl)Ou`O!Wc|J%c z+vQC6Ip_K83M~$Bc0_$hb9+mg-WJGe{CvUe)}(09W}> z;WX#T`3Fs=t<$GAawfv}Qtd2S+M^vd=hD*3B~e47t0P6kjk(qUO& zVNo_x3S*SJk5nXGOCD=^o6bSxU9aUWG~A@Zc1#j;?c|o0R9i&X)iI4~e{&?bQ4>PD zAb7<9np9grQn7lb$41(o?&mTGb#hFLy6tYiYgSE@RM}B5aPX4^SFkmj zINw5qwRT1WSUzU?SICRxzdZPj^TX?d8506lF3DryQ+y z=}J@WtLGQ3+Uq)XE_u8Cq@0UwlcI*EQ(9cBCn4<7B&{4RIl!}7R;WI_XU}_GE?n3~ zWN6~tvb1zn=Xz)n{DL!mUT$?b5N*eI$S|8JWUaR=^|w`+$m#&m5p=SYp}Lzaiy7mf+oUN*`-67VSw4k}<0hLs=Z zCy|kLs8xGX`iH5~tjI;3<8hWJ!l$ZPPbro$I@2SAH6sXz|136|0-A zvKI)}N1rw`yX3ArmH#u)4x+HgCw<2G+DhSk6QiYK`V$$7JbOb#VRId|N_(LO%2|CWv$?IaeLX)SO)1xL zCs%07L6D|#nwFH7@UytU_Mu$cDLeQ9J+a#nqJUcgIIt$?=pkV`a4JN*6V@-Ak=;a?t(0_Y6k_aI&9X`9vh?B!?9|sf7hgfE8<&VLeyUfHOEDl!9;{R zOkn^=Zw4INr+N?*Hwzts5rc*Db8+GLm>t`R(f)#lq_$d%t8H;w&zDgMD zQaDtJgSR2)#sXoP6Y*_Nm+QQW_PY%-P)zk=*eb>`)wp6P0$goy#mH_|Ur`wvv0aKI z=pAj@jvz(KWW<1C52qjyOmGzNzhCb=%62x@}fWm3b zMB3h=d)yjoPM&Fbztx2)ANe>q`imX0w~Cch_Y##c9d2taI|!YBL<#^X^8?Sla!5`xqsXX#MZs&}ZQ%xt5R#FCIu7sUdS{!UQZ!m$PV z%ZWp%v5p(}APw7!+qQ7p1TcYH1vlZQKpdXNTSpUcuV6?S6W#G~#HJ9Ay`#SHho6Sq zwie=V8E!D-om^+*2Cr?Fs}?TRSc{vrrXVzcJH4jhUablEorJr**26U!rPrxixB|cm zsts^WgMS)gm}&-oryw+l6h>nkYLmhpjY;G`5&yL#RSbVP-v@UX?iB733*tURw#|?G z4_WsR{9BO54|fJ1uc`1m~$(1cnAr(ttO%lL}rKzB*vvXU3It0~5FAjYF3`%Lw%gS z!e{!xOh~;+K~=s0Fn|!DuV=ne{prSn9VKB$0&Y<2$YX?aBe*3~$F`uJA;t_k1~^Vj z+~MrIGm$=sR;0rx9)r?4ka_~@z%r9oi|3%%Yrucx(i*r4aTDpR!{fXF?owub$$RXv zcJf-_Sd0$#Aln05BEmPqP42Tt%XqjJ;f_((NVjZdI-X;Q@v9}hLywslX_F9#2O+zA z{+S{gdlk`F6i8jwa)XDhHcXgF+j-6_z{MA^hp4NkgMz*{JE2}t^=(8{4K#Z??4H6r1zJSudI z&8Vu{Vbuodn>Lj1M|((fHO48icTHWn)_zu9?Dnxnx}KoW#FM3kw%B&c$*%cUPzZf8 z?Tg|2ArJx>f@);nIj8A5wjTY&=^&G@*^>(pLmF!CQJxkEONxJT*A}z~yM`E=7cK`9 zWnx^qY6CL!LmoJCf+T3ie;gpV^aZhY2s@UzxhkLsmS5(cxFxsA7?d&oUa|sm9E_Dq z24zc?6{t-LcV+6?h67cnvuB?bD1j`k_4%zM))&lsmQ9OHM$4DxJ`!NQ>O2GyppxG-Z!abW?<8a|UVFWR-&4morb+N9!)F5JC71 z3n98679pm$mZI})0!|11V|`f?IA~sjw1Pv6E!6tcN`&E45QId~UWZ2-k%C$Z2cFgi zRYPCpX<8f>7tiV|kHZ)NWBN*)H4=d5%=#f2w;QD8Nl??_Sv7hw+RT1mCGBp5o|v?H zYYK2s4-i^-i)T(q(Q^siIbaG)wpadj)_ceN^9d&GI2Bc zmb|$ht)c{{cAu6s)!C_V?${Y?V>4sz-eYf*!-;E2th!9hB`AlQsk`?n8Q6nNN4lzM znQ7dbHAgx}j9afyw{*_ur*n9&SE;iyQ*$&ff@C30V5WhOvfC~{tH&p1rtOQWX<1c! zc=(h*S~{t5dcEV+Ka(dH15b}2@a<^IolGgt^0GK>0KLI|@g<0}Q&>cakZ$gw027lYo?p``MG4$EvpuD`c8isb0wA;q^#!cUOhD2p(y9PBzTPd z>Z0GsHIjP0a3irb_i|BqJn&_CG>$kM@kdJ#M|uLe^f4dQ5trp;>Lj0;X384j5y})t zV{~fn)^A-kpLRH@C{H+R7r?mbR3G+!$`VeZqGsEc@9uTJb_+`%&eTqv-`Cp7HYIRRrb1Qwamd;kBKyc*$lI zR&!^=#BvT^xKYI&A}ibQP?eLn8tW5TbLKs#UW)zLpu>v6et&SuCP>ObqzYHbh3td=#u)iw_F52 zm69{HwNjlx>hxYu*_^=MbmUOT#SvOd^0}liRg85183UAQOv62VwB0Xq8gUXneKF0C3R6^_(WT@xyYA;k9?p?Cdd2G9*#%1 zWkgE=j!a_b>c278{>d0+lsddki;BI%Z-I2w>#P>6dgIbARnArf;S-}%G3!iSMHMfz zIA2xwHAl-xT&YKoZRMflpxkIfO*u2O&wY3|Meps5ft$uT*20l(oTaqRNFqMWBJb9Q;O^x_)Csx!9N{yOl|x__7GmN5qfXab%dI`*efmM@@s`&+QS9R|LnwdYa>U2ip2@`mS0HJ%o;Vtqh zhWA(bK2_EIoK7|yKOG2@)IDqReWu~{(o@;fRXDJ!=hwzi#ot%bzdHT)fnH|UGsE=i z+{@gaV#aN+X1?<4MV(D4q(8#S`WeVgk_}a!62qIXR8`M#)VFF;f%160Lx!LQ%Mp%x zNE5vIg=pKYs7Uu+rWfI+F=TKFVy%E8pIOyjwW+c*uh6Irn+3?xB%T5oQc{?2R(riw z-B%UmDZ^yzs=d`7P^L%_bn)lsE2BD}MS83A3lxgG%3DywiVi7IAWHR+!a@)7sSJbY zrnlG!ceST-`dQl-omJhJuwYf${axfz*?p+IRGIL||A+Dl@LN@wKd`d< zPBg75B|Qa-vk!$@-FpphA-wX7tgE&!^5zvFW0b>2TvDbCJGBlZ#sFWQ(32QDt!Ulh z%%`ZvU>%35yb_}-1<+qr_)OjLR`;<;@_`WgHgd@Jck9W^k}N0@<;`DQK4DYQ;f_c zlVXqnJ&dsKhpKwY%L?-l0|%=0kiW2qp6>VUTG_={^;GI0`9(c@Dyw=RQdDJFDpR@r zk_w;4ZWNem`%b$Hf$H^I?d_?w+N&LsPdR#({VTPotWxAl?dyIY8TH^1XAW%gjEr@i z8M>lpcqv)}Y;l)i%-L>JD6tEq2Uhh_Y}5h7L8RFb(hmR3VhjxlC%bIlYkJKi`x)fC z{f@kmh@r|Xg%Dyh7)7^@R#I3{wbqOOy_0&S(a2!5iR;?wwRBpc)QpJF5BkZ|W|FH8xq+J#xrXVt^w%-R|PY;+@%eL(g zfzct-szzB@_HT&Q2{G_BlnTBTzEHA_`{`0`fo|>-EP)%- zC;02!L*tNBU*-lcZdsk&)AqYe1whILYFg_XH^QOe^EK+DZXPUt|MwAR9 z;_WE+6hMSf{)a2WlJXKZIlmB7VHlZ#dK?<>%Ks06qE*|x#dwXAIafo1V`jz#mR|@Z zz*|8QK&?0(+;ZxibF<7|zj91GrZNvXNW zYxYND?166!hGI}p*cQ_+WG)9m&j5tTARwpr4B+tS8BBQugtXM|Sxyav6G{(+@xH2_ zePn=oRP#x%h~;;yx`u+H!jV1KLW3X`diH{Q%&M*`OmZ02kW53Vi~$XV!SvtroTPxl zGo+@FO4f_yYxy0beLZ(oSM}V5WYt58hDaPq@Ff1HBoK76>5Ik?%inXCQ0*>Df!fd6 zlq|3>j~Pj+sDAf81XlM~#i-1V(be!v%#P9UVZ;nUX;ybUX;J-2>7gAHSUTdggW@ZI zkq(YRQ;Q2ds3%AREf%EMTT+9^NJ*4K-XjZPv)`pk8762coXS@IrQ>kWiCXvlnSg zQsIBiXm_!dUE2M=2>Y%yEp|+?Xt84oxu6G=^T!xT2C%)AJ7xeIdL#+79a(@=QGAyb zkBYooP-u`|B9?Z{5wRq_w+~Xp976du1Tsy+HR_WR{p28#Q>Z$sxjnzC=UzBiXVQIp zem~a4=d{Lak)h{F6IDTO{rVehM|D2&chp0Ls@kzg|1ZtlQC}j&hV<9dUiU5t&><#u zXYgu2GY_L<2xV&i5VL?X8nUb~j|gypaWHvyUk}IjN;)i7?BS%MDc&!y&>TW>h-E}o zKbiY?oXAW~v%oAWgoHaC;fSY1=m!R;S6A&6v!Do%ixy$lgR1a?7fT9sCnP5IMzA0y zC3VR{N(HD68t+NbA0c;S^82Ai<7xv0>96Uoz^G#jscJn})hG-+7E?r8f(*s;lAw1j zR2dFbOvX|>k;AW{ymAi1bSSxbPO%kK6_xq_r<|rRC3^c6nh-h1B9TZQQbl{A|8mmD zs;GdPw4R5l6w8FHWfzlGNCxBW45(rE(5Ep?sQXM|>I8x&32N*FQgdA_!#M9Yl5P|h zXot(EvmlbLG}kc_uT#_ODS#Leu}UAuN))2stcq4jq0{XY&@xz0`aK0zn?M|vgHWBA z;X?|G(5Kx9WUWv#-?n3Ejzf=A)yJ9;#jNz(HIU1c=2XdM_ zJNoArme`qqS|k{TKdO^cN42Y4)qPvK#*iu{610)?L7a1zlX6v? z#HfNrwT$qd<=VTWMSxXS!}s~B*PSx= zn?LzRc<4pD_sttH@U462-C9|Dd+9TEKmF6X;jI&{9Q=pcn{I!od{5!T(FeBOAKzc` z@hO)+`YugQ4|RGgmkAqV0`xKn_`^bFNzD?D52kwu4DFr>tCW0lQ0U(}zAr~+&v=oC~e!o7mW)i@T7 zOaiBAJBsOG%8;j^8pUHJ3B%yOm1#UE=+G0H+fNDhOHO+AL9|^gRx4YKuBO3n4OAw^ z-Gq#(9aYUnwU~`UV8qccT_$#_PCyEgb zOUwvn)2eM$U8}aGmCCBEl|FP9tbCFRGvxVDwDTl{W*${FN>Yp(;w$2cf@?A2$iyf~ zKtJyYA14oJ5s^MoM)`{SP7h;-q{f7S$(fdBSnW%w@9PqK+iCqX_X@)=GH#Lz`lQ+Yt=i4Rt~_ z*?hJhdRtMEG`nX`+H9r=Be6DBZGyA~pB5|7=OSX4D3DWJOoz6KS-hQSJ%S8dlC-ZA z(gs{bLxT)tbeZL}$lgP;SM}^0P8=^}g-ft)Q8kzh@2%R#FqA~b z!SI0#X+ejb7?Fq);^or>eF!zCPZp)Ng+sSj3mo(y7UHOdmnK3ko$ZiAUKmVa1Hg(O zt85Sf6rBTU_ioztK55?rvpUwk$P+TH0CoueAS>jheNXBiz5d=_ESTHNS@CKtcB@%k z&h1#OMwx zIF=-R60um}BW?FhC}jxo&}1a(87uAyOx~}^z`~aQhEmyVHjm&1ZFplMea$7W8rzaI zfJZe&DZin{ra!v$$sIF3=NcDZ=9jQab$`Q9-4`Er0$((;K7mKb{XTx(>)Q}d_&Sqe z-xhpV>BD=1y~|7JSG@c_+>hYHSMzeGlBC0hB6y)9>I?Bw?sx}pMrB?&H#5voNA+DJ zrH+D#a^mr_4qlwq*W0Qwh8mH62*UT{y}my1@~NY!v4$Eor8XR%GOc#%gsJN%g(pm& zJbn6v>A`8?2{WdJC(j7asI948KOHL%oa?FePxsdNHfx7c9Z4d9Uxn$K{G+58)f$dcNw;c1=-gv!OQq z50uJ#jMBw|oc}|`^3I}kvD5y?Xl%c5Pa0#Wc5gS-w*LVl^Co)NT^i|z*VZXjZ>T!! z<8EA)BUg|m{mr;1Kk3H>C2?GIBTtm!26`Q7-K<(vJH=na|CI8Hxc8RXUw~7Fl;Ls^ zhyZ<6yPgj+5lX`HJb1Dt9vhM)eNnl?~HBX6KTV9q%BYA%kmGS@JK9Y{;_zf zWxc#3tvaABV`|~@0xa<$j?Yn+A?)Dr0-0;%g6WVURdCm7Py1#45vInkQ<$0)j z*x;Y^e=zv-#!>yA_;U2^U+sGF$frNJ=jTsHH;;ernlUXe3@Uu$clRB??Dzk5ZN=+n z42!?s{OgBbk9V7YJTURlA9vM8-yV16&Lb2~PFwBqZN|F&T4+`mu$ z$t9lO4L&LFhON^JhDUc7T>tAI7d&=bsOXp#8%kFF=lvxWFPu?&(?$Q`J>gJI<*P&X zRKBwBx&g=C`O|@Se01s&r}!Tj7W}V4BX{h4YW$?UDHHZC{^`WlkD4b1ABfgH`~0%$ zf4$}YS@(HgS#;mnnq@OzpRxRz^Yc$UIBfgsS-0K%rF&MdKIJ|C?@xQ?xcoELoiKad zryo2LeCEY_q&wK!w4m zRAH#;=N2k;Df|cU3++d}1DyAP|9hm{i@(1C=M>=HjkwdwmHJ1i=ss#X{O=?G$AEhy z(pHqefXVL zrql=cn}zgW0nXom^DxrPLwp;;pF(}E$KPb&cB6hHQQkh}|1jcKq8@)hco6>IBJEM| z??O2LO+_9zog)-T>Mt z8||~c=BxqrK%IZ)gU&mU6lHw=H=Xm@iyF~BF5V~y8+mXyfSU7YD4Wjya38$A2nk{G z%YELSU%9ZW`u?)B3LJw9+DAWoA78c)R;~x)0O!P{^PS0=i0J1;=ubQ^K;Y!ur;f83 zh|P3PI9`T?%a}Po*7#R^=y?Dc&dv2@g+7(ZVm|L%&q9p01-Xwy+tfLnBmILg&}a6Q z&F7Dpc}RXtU&%8^&U%e{INyC<4AfEfQGffRtX!Wl41xF-Ph-#H(=VC{rO3q$%k@{yu~ajyo)eb&CJYz z!}xGN68$xj`!kdGMQVFs{{cyA4lfCXnEq7s2u!ob9sbv%-vIh3ip9+NkfrMBj{U~o z`w^z|@kGom26`tL3?1ZHCSVkE`K-@I_W;>X%JxZIT z1jp(GWF-4Cs@xxa)*bQ^U z{`#|V5C#c9AR=1 zZ0o1b%-9J*b9AF{ovS={vw`Owef(M3WV z*EOlJR==^$e%wGa2znBiv1WGwwqFuy!Uy?278xXA@s!*zs_DcgBQ{5OB)ZTg=*ytq z+VBNhK{>y1slm&-eR99Ler&)8B;GI_!JV*Vlz>xV@+M+4YLgMI`-=Nb;5+Op`S30_ zTz=&5+Upvh<_p{)%0~fF-85q?cCn&nLuA7o!2x{2BTWY3Y>PW`;E(Q`~!g;B;=<*`p8~qc`t3q%oxQRqH;mwNaoq zsf?rKfn|>P23}b!orafG$ZSTj4#M5^#v%~ZbtAUV8Q(Tx`M%BuUMdffz#E9|T|@gq zZOL&0?m>?6r5#@fFZK^YT5XQNVlLZ*UC<{P6OI-?+q_fE#G#Z7^&lrYYqM z24cQAcPJr$z(*ln*2+X{AZ9&$>1$l*bJNd<+hBd|tQMb@u%6r;@57sol$o%8gXmz> zHe4AzbK=C-xW7Gp-8OiA;)X5JNNnT8d4!SBoVvQ&nwn|H1fxNCYPL?UnIUA)&fgbU z&mJb|`$C*kwn^z(FS%r%+0y_gt)9V28RKqHLq}(4lLL`mASOF$pCxT=Bjs zdes*F*5KA6jH4U%gYdo}?gEFD#OofU92?>{&K4T${d|YANj-bBGuD%3a0#)mvjc3S!!3$B zY}^_1^%gW>Yb%{dm0o4|jdQFE*)vAC9wq24{Q?K`kS92N?Ex8g*s)1;;*mFWD1^Tc zTcOr`(fh>?jx0QZiD%XWA=IB2D~Hng8RJ|-ocmKCigf6BJ;e1pdP%F_E-)a7Li)w~ z42?oqOo)UhydteJmZ59bgv-)pc7R&szG2=s!Mg0-H`}e6a4T*uYfPfa(9Kbr-xxIl zyfT6uh;eMy*tc*+lOC27!j!Ug9A#4Ia2!C@lXZDm#AlC8O%yh-Eg(JaRb{Z z%87{Cw1OovhBeYkV4yP;5rM+O7~IOYwJ@gjdj{k!_xR3I6CpNzP10v>SuugFm-XT2p7A?m#o&q<7 zwTzMGv-0T?hZ)*_blF5W}OrnaoY$>^IK(R|$!1P1V)$-`%qJzLtEZ4$Xr8^OEcFjmfFRXYgRX6fJ57M)-g~o@yD%pT=djzN?K5A$s3g{<~M6iwhPxqKe;t4&C*g?WAkoT_V z!$h8(-}i#YowIw~yK;92_ff)lt5al_khje;gb0T?_Uw&m)?yPqK-HV%=jpEmp6G^9 zLsxS^b7iMlgMHPG*Hu%-EgaAp&C0Ew+e(6aHOu~R&y8SJN45q~Bv%pg-icmv$Z-lX ztDf@QrH&`R#(X%wmV3gKWr5%LE^BKk&Hp#obFi&?>6XfYz+_uE8Z`#3qMpRgrpS$r zNughGj>m6|kO-NlvLiWjU@ZELqGPtSCFUTpF+rYSI&8iD-}`1$c{NM8f+N-DwvGI^3E_^jx>SddZk~8scl%+h%gep^C2r~?=fBHFP&6R%RYkiN>`XEg=y@qM-f$0oO zYxvqq5t;gMENC(~u}Ct`?z6eMD}?EX)*QY3ryWGzYC)+|5gZ*(;29>qCaEQY)a9h? zr(G=JVVv4$;j8VHo~E|Yc^OTj&0MZnr8UblcIhT#O_WHR42_mP^Uku~Xxmr4wxTjK zX^Cs%P8Xo3CA;!t`z)YY1Q!OlwOTaJ?GrUEn{^s#C!3hA$09D_MOFzZZKI>D{LVvt zMcz5I5FzZ)0@hGtW1r;{50lS^xL)Z<#jQiuuIXU~bYZNjCt;Oc3xjAQpEja#JHcw| z@*-lZWnuqU3;U^#tko&P!1lYEcv~^8rZ0nop#hG!0bb<&;@C+>vvKTjpIpMh_ZGrDtyaqiMN6sp%-rI5O z_g`-N*1PN9j!b@h!&5&$^@S&%9&`Hek8j)b!j{EP4EWZFQMa7)-1w2-zT}L>u|Kxo zd3N2Szx+=8o^L(zhf{kVKkMYDKUjO=oin!m{H>D;Pk-r+AMuJhCMHAvRz`R@o}72v;NVA{X{hef7c=II#(P~uuGirZ*|kcrsq~Z@$#tp*oynV zdHaUuYiA!~9t&r#4XmwQn_Qbr1lL-_Ho4Y4sN=D<@%3k}T@5P)OpU$Hy*nRoWbI-2 zJ3{MK)6)7$Q>H4b1DAX=Yb9=&Y{BmeoTpqVs1N16^9jEq#@CDRJHPX+ zjBxJI`s&FFz|TVb8OSw&U4Q#v7LUttTblnyDW=jJ>@jT8@_Tms;HMy{JM%6Eih(+% zkVgb*dBRiQJMZMwCO9={xBhQ3wx~e^HOaUHY3;APxu=e|F%jPT1sNX>BiV;SeYkm= zw_5Y8LX+H=$+s1V(TVig57+2psy<*uP%5|D`9_Ez_$yIf6mI8^(oWfkcHaf6^E;f< z`9c`$ACbF5nZG`A!5eDzVJF^}$}@OQd3?o<=LlFUwt(@x@0MSjcSt@==|j%kAomN& zm#HJtG~?~aF|@$mVJAW^+L6KuHsmduJ$w5-7df)CiQl4E57* zcaWAHpgFm{6|pJc^bYf>z38{z_3{aBuD&==+Q{RB%$GdFHriu}J|1Pv)xZC`ww|Pp zMqBm$-XU-uk9j*(&Q`bLwS3o3iOl-)}~r-}uPi`*|zQ-?P2Er)GQpr#0I>ukZ1g zxc;ku9j59F6N3^1PnrL79Gj+(*;QbAYfEd23p{J`3i_LCnri#kRMJz_zvSdV zl6Lk~JXYJU#>>FM{)MZwzBWqC?S`R#`GftX$-6&Td3VW(qx|c(+*xzVjki29>4Cdeod5N&NAB$?xO&$K z=YOv-H1w6p#>$`d{Ia9Gtl`xm*PT9R-k_(hEI;#0_pjY@%?XeF=#;Y;J^kLT^B!IJ zqrE*t4^F-DGe&tKucx#9kTw|+hT z$%!}5{(0Sn6EDB=qQIRyZoGbH$COXQ&j%meHSo!gzkl-8-v0<5Uw7Ks)yb#wt~9}@ z#&z3`b3u`_YKEb&t4HSzt~nyj&C806f+FyGKCaC4)Kn9}n|DOsfD69*Ve80;-n=z5 z`k9e8&iek7YkoQU7d5LGU76Qdv*h|kH4U|6YsQdyO8dJ`O*mf_V@n-}W#Ycokzl;` zh?)UJ&F^16sjjA`cG9@XQ>NEVpQ39tk~QicurwArv?~9Z?KcmaHf_Yc?KeH%Y3{0N zW|714me-t6)3|5Jo<$clScg}(Y}t}^dZlAyB;Jvn7)(Sbf|QO0GgHjoFY;+WvqCA!}v7Mgl?TVm_6G~Lw)tg z@11b%%!mK|KPsL+e{%P>qj&#h(tnN&d2U~I^}=!Qhj(0i+KZPxf9aGOW70*NHvja8 ztL{Jb;gYHMPA~u3AM;PWA@cD2(hpyH@&4u;W^KBD+0CnOS()5cQ&sWStl$3rxHG@9 z=k8}-eqdrUxTYX*$(8TSxam*BPX5QN(xLl*b;KVoZ#jNb|I;sh>D$Mh_xiGT_YGaM zWPZ;J*FSOUrn^>{3pU=A9|~NV{L|R-(`T>wFm&3>w=6g~4@A&FbOOKt^ zalx~X_^x^Wj5}9-`zJsA`oX8)ed+Ndf4sG8Uwrrni>@lHnsC#(tp|6nt{VOI7i$W4 zg~BT?Y%jj?>OqAwZ~DgNf9?AA-N}}Nk8OYQ@zLx0zqaxlGoD@W*y+!GymC_U2j4$? zYU$kH9y7Z6%xk?befi9VUz+sVx4s(r(-r$(xyE?)rWX&Cwhq32+|=gWIZn``F0edW2At-NEyUoLv_iPCcqt?It*vexJ)W1oEd z#b;MOb>{Q?e|+ECahGk___N55{v-DN^`#FM*WbLZ;KJ}dKb|r8=ZkI~JZJbTXMb|{ zhgIKQb^3qacGi1`!du_`;eo)Vubq3KZo8%*pVVwGJPXsndOZb{1iW8=TINSj7PHj!T=aiL zv_hJ5NP7CaZrWHKhb7EyU309>_9TF*U|P-eNi|bu)Xd-{Fjc&@HT3?kPg2{>-qV4} z>A=KvfH8N=pZ}KVH^hJ2f!NL4`z@b*|6jiUrQz2sIQqDaZ=Sm9<{uVJKPs>B{x3gT zHuS}58-G@Hp!Cnve|%NJosZ3U&KOX;;F+D}U7-uly<**{=pEl~-2GMz$$ zJms~o&zf+1-Isp)gSnqfdggA=oV&hv$2X>*`}Eb_@wDblqHod`!b`D6w1D2DM_0s@d!gAWr+%9jY33O%R}_LN67P3&-1;m z-}iex-|PF&Tyvjm&VA0g=e|Gh&--=X=N!vKep#V<#iIwq%`3AQZn6uUY@V+~M4kQY zFx_rOh)asDs^#|;a$pm^*CHaSAe5%4FZVR0r!#SQ(aRAV|rqR zOrlo`Lk~xc#ySN!l%h^{W3%iC{-UBYQ=avr@jK(yP7 zbb{t@%w$GG6NQh^9RjCiARFQyyre*hAmd!aT!SdRbrk|?^`p$KX&jh`JP4rqni7F= z3q~y%teaxz07*MwFl%DBe?#1W*qK2lkkLjNh@Hk?i5-f#6!!1x_l0md#FOVE#ic^H zBnUi>YNJ)95D+dBQr$QloMeaeUmcDp-Up94`=G$wtS5LpkMnUKDOX=lNNuwMI3&Y^ z;p5(7`W@Eb2@xSV1M5$G|MkYbbwpE6gfvoo+*24wC6*faTsvT?bbMB)_!}%X>~-5}X!d-1NGB6TD6gT|Y;MoM4x zvc#BbTPa|?L^#4r=0z3bBe0xc9u(x8tj={oZXR^Au`ljklOyi-dX*PEk#ze3b{Xd z2YHDfFLRBfW7%|HBPVIip!y?v(GLSIsL9k%d3Gr;VO@DT)z)*V1ylxmwxvh#w!_34 zN-_&nwf%Wy8=vLp=L7{Im-Zy{USHM~h*-F|Nbo2(NF9Ff7r-$&A)g+|X7IJ^j)1G* zXz|jQGw*34Cft;Yzd%!@d(RCH`guAhDtBaC8W|HJu*kfC?HK-`kLuJVs>@efF5B1T z#bjc=ERFVP*J?b@JYh>6vBzU2FsH8C)6@O2nGX|PkVz{V&tePVS+KzVLAd09TDX4c z0JoUZT-+@P1fX?KNQFStZYJ@-qynG!-Llf4=|TSaz03lkzVAqiMuLZa4|-K+1nlhf z6=b$*B5h1+7xAuqF_NU^r0S?QoZM&(X>8e@7A*r|a+xC-f8=I)91(248q-^c9WZ93 zcoLYC4Xq40;pTgUj>B?d3Fr2Ly60ABM(DoMiTU*!ThutGJP=?WplLn6SUXpI#jo?X z_s^RpFuFQ+W`U!&uV&t|ly}>WRkOY0I~AKfE5B^qkT2F$Ftt=m`Cjc_OF9!fyuJUd z`;^kd_{iQ>INz&>p}Oj+VJ_-@$kD7t`GhyOF1N^gUZNoVQ5|p}zT-g+L2T!Y4zI&0Nl*kp#EZdh%X(94~+mcK6EVfR6z(VhC zHcT@ebpzr*cAplR=*WU8N|C$&)K`HipzzYtp;JLz!e!}Jj+i{^d`q9*p1n@#pK$!} zqS_02c*YS3&p5Q%xCjIZ8qe4PwzY2lLqs;gSOYdy!buQ6vI#tiDLKtXFW3g~1fE0< zwC!#nX$qh>uUCE2ni@g!6F8AvN&EE$oA0|eo!cz}N=DuvR&G>`%j~Foe``eMrNp2i zoP2*JVG2vjB^eB*BxUlrdYxY$ZF*P|O|p)%s=?2pxE zL}efgdcqnnPV?T5;F6k?H7rw+*R`6SAG^yNaVemi-b=wf~HLI8Kadt6ph?DnF! zQ&i`9;7)1T*H)5D$EMgvM@@q;x``B2=}-tq@pPo4Dqblubur2#x>0zFi(3fkKoEXw zig7EH-5)6KHh;~LSNzz0k^W@QRa@H_7pmg6#eB(3m)@ki0^2(%Q>>@=GO^NNBX$M- zhX4GC^XMX>fPA6QI=I^RlPqiGGCSFIOkqc@yd}!c=lmP`9m+4NLv)6kaE24y8;LC^ zXerh$Y3vALzeEM=JJwd+5#B(VRcsUgKAJydqn*yX>|)UgbDF^+I-CvCt~RGU_d%B5 zvQc9QV3%BgT{fA>zm|=H-U>z+=%_^O0e^jaorvysVxOq2*!^*72O6IJ<@jGzG5 z`JRdXqV7NQ7AE2q2$9l4)EkFDQ2uH70#HZ-lZ$lk?kT#|i$IO*J*x_C=x-S){yeZE zD|E)JUN^U0yHI?A1)W8pnBSAn8@xBSym|K(YnU?=b6BVFE}xoRUa4lJZ8t}n>f@$L zCS328M<1_Nelt2YIYPd3j$j52EX3SUU)ko}YMeuKK{0WBvBJ9754iEXFa zyA;n=_N<{+R?p&nc^UMa_SXc=(~AJ0$np^ixuVnFjYc%Ugcs5 zi`|n@FAI@QADHOT66RixRuvWB^ve!l$7%zj)kG?q@*PG6lUAw0Pk2z=HX5P}LPz6K%Se`>7%9tiO* z@PYf%07XPg%gM?T1E1`-q71S44~ONyi&RD2bXES_V|VdQeql;oSPFMb^6<6T)>%Le z!=GB73UM{q>CjL=;`rc1xym64+i4ba5mGd-IwwamcN-Pcxe!Olx&+c>HVnG+zN)SANu{xkLYo!~7ImzSecsS7kXHoL>!rt?B z53ksFI5Hg-ZRGepD&qd2;}@Me5pKc5jNTmlvBd@lPn$TE*su8WDoed z`wmuLCaL42x)9L%rK{6!M3|CgYDt}H|T9z@b#c4Ckc`!B5VFP1ifF>4Xk%AG0uU99DgMRCI)vN!o~l= zed8eIjra%LH~N<$*2F;XoAuT-F-NW6clIxMZ{qa*ckfMHYVz&5Hh<&2DMn*V>4qC$ zr>Ww+5X#w?^7xP4d4Hv40bTQyY`AE33G2xY-FeV(=&}3Y!q{{`^`om7h2H#LHRWM} zrIawmYcVeWW**lve}FOeM2ni5dS;&;>sPzq_p{2T30fNXe$?33R7?nO44;(`wNd4o zO%K#hG=mi@Ft9G50&y;{ipo6RK5F~)BnWoQ0MZgf?tVIjC`gI77OT3qLOOIj2cs{t zvacAmdT->M^nE9Xj9#qT_)J^+p@g`v?oQ$T4f-^R!o!M_?D}5L*}?pt^;wtlcQ1v9 zrnn~rT=9H1l=VCJ7loHe^Nj`6DN&cJFLK->)rhPpi^xPO@RbRT9Gv_-PY83i7GemJ zQpBFf_qs+N%W!%}rDNgt=8Tv0x)~7-?X89FA44Ojhm^di2JL;*kd%%+w@rACRnH8; z2FK78moM!4?4ld+Zt?1#>z@a_!yG-1`4{1u3#o1>-k)r2eu=;9-O4>*af*Z|Vwv-_ zxP@Y=ZBG;3zVx7IA0^7sG|7pxucf6J#TIH&79#wgn{F8Oh*p#o^`?{-YUDqD%C2ts zI_h`vj7!@OLC^2|VhjeIgBQ|cQJjzXi>=FU^=a)+HSy}sd)Bb;joSdWu44eIU1=FL zT&5$~8;@u6uq&Xdo?4MfeWc4Zk?r|NCBoHtCrp-yva(06_qjv-fNzW*V;&yf29PY6 zTLs>GG4FrRPUH(vgG-|zCzGH@z&Q{suxLZuzFFhkGn_Vf+HRGlmdXAU&0N67a1oco z{$ah^GBZU6-eyY%8xFh`4I$YWHvAuO6u@TKY;FLBwGEIz2rl0k12CJUBxn>!^{Ce? zAi`8?@BxR@J%$4SO0o8R`?+sF2!;{MkldEt;l!!vO=v-Mukc)Ih?2M)f+CMEZ{s^j zRPNT)1e`Jghl2@V*w}d^Ivp%f)0Z^6uebUO&k%-7M@y$p4ttk+I7{c~Mw}Iky!aR! zC<^%EGVK$lx|+Ec_Su{dtXP*5^m3FrZQ?WPd}cg_lLnT3pNQJ4h77juF~62qrWBr% zW;<3}o*RV@4BeGp65OOS{))ltdGPExuSO?@xIWJiz50h}Jc15*N2;|Rec_+|N58S8 zpIFzeED2Ad4{>Y~2LO}k{=gJ|;6?Ku(o=~f!F2iKeYtOvQ7`o9cd};>3fOl$giEp4d)jzZ%mAlw*)dkf*f>!~7%UtndhLn={2|PaE<5z&W5`c7s6g|?T~;A z5J6Wn?#Wy^b&*j_1e^3zY2lGPvZ_4#+F5=RwtSh26#8^-RT%t*8}`GqA$Ur6?eofq zjjBe9@h0!a1ih(W+wqy21&+v5FgH2XAhpJI>#`7cSP$uNw^W8}ACQh53ihU8?*CA< zY7AbL^3wCaede&gFCXRH=)y0ulGI&QZ5(WGVZIakZ|mZ8;chjTp? zT;9T3CeDKE1}&EDm``|*w+ zD{p%ZblYB=FKv`Ofp$Mx-bm$TG(w$|+Prt4hIK{U<(grIs++uBs(OfM8DBZ$=rA5E K(xncVi2nn_Ui4c4 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Aks.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Aks.dll new file mode 100644 index 0000000000000000000000000000000000000000..9b77bc4ed040cc1c859218cd889fd64f2eb61248 GIT binary patch literal 88960 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 Y>}kH)_0LzK=#RJZXKP;169jf505`ZvhyVZp literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Compute.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Compute.dll new file mode 100644 index 0000000000000000000000000000000000000000..b34b253866af57189eb809e62cbfaef771b72a8b GIT binary patch literal 1418616 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%0Ave4zg8hwen9;yPYp@)vb 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

-~wOsz>m@6!gKRK3pQn{Jz7uyis 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

*UU9(wZ8LpJu6IwK!$mgG}9jzj$; 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

lt!db8WBQiLPqBKS0aAW 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
  • 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Graph.Rbac.dll new file mode 100644 index 0000000000000000000000000000000000000000..b2903f8492144ae0cf20b520a66231110cbaeeeb GIT binary patch literal 577920 zcmcG%2Yh5z88$vUwf0 zBHf0CCWs&s5IY@2iXtE)pe*0>Jnub|JCkIQ|M&g#+r7_oo_o)G-c#>6x6IvU&x;FD zp-_nN|HBUpg&zX>x4yQE-z>!L&N+8>7VcQu=RwfaL=W`yf&ov zY+>oS?Gsik6u#bCDBvIeUcC=wF37VICW#l#Z|z5 zZ(NtguG=!gmqq_6Z@wr(7C+=kkn z+x&{%`Vm;#(hf{BQH`YOj)s5*a7ws?3!FC`mYxY@#I3}uM@`pdST+fA#_W@ zoWEAQ?7s#~YYeqdo-n!KV55I>;baO9RafeR-C!R@EBkjSZsflwjQtOUiT}RPp;?yv z?c!yB8!)XgWcFc$_9?h|P4 z6gTpH!r1o<6TgBG`Is+a`B+}O?9tnh5JQ#_j4>e!&G{&0>8zuukzZRF`*nqh|D@3R z#RBoNUkjMl7&7y)LGu)H{UR#NMt!uyeleO{SX7>dPM*3YFb-5Ow3iUotz?;I+t>of zVwh2$w^lll-$oewZG~=SmgQFBWxpjbtubUiARYQZ!L3>^OY>o3lMh|=VYSSM)f;{2 z%zW5U=|p}fVeEGnx;5y-4&r6MJus~?WIn)u`ar?0)#L;6-B1ow=);1{hqW7hz!^*B zu)ETU{2s#C?UN+;sQ<#1uF*(@u5LX9bFJ%teBknaG=tO{6WIlA1qA# zAwnyUPm7oR0l>7zkoki2=nI8W<$*eAsFUe*WxcFU)^Dtn?#!3Nl}_Z35XSyUq1%9U za+rA89|}xs44Dt8Px?T?ZB(z5amr)n_~n86Qk@*5bRs_}jD1y@_+y1u9!HCpeFd1- z7&2c_uk?k&sPgD(Dvu@U%EnoFY|>aBs5bd>qSA@{XN9ppN$56Zd7L0#_QwO$8bjs- z>XklFaF};w=jn0E1C6G+qlET>5k)=>DV@llB8>e)Vd75}T6uW!vOgJ^))+Eh&<5xW zg;C|vJZ@m}G48m5wj*E8R63DAOBnml32odsL%i%y2c|WK%m=hB`ar?P4a}1;*RXk# z2n0+HOb~&9v$+W(5OCHtK?DNMlO~8j!1>Gs5ePT~nIHlIX9^QUAYg1aK?DK@5felp zVAL}~1Okf91Q7@r4@?k&fKF+G$O23cG5nW`Y&B`$y2U7VTaJV;EUISGsM~D?b)bC^ zu|_7A%P`I*#W->3xr;sMfnW%8Q?#lP6U!rF(K&1fIt+^y^tJxJhw5hk=O}EOTVtH# zUol~m8q=q^*&wq4|HgG?%8F58TQdv0o$vd9C>tg8`P3heg+Rm*!62ymGl#&b7ohOlM>JVX>n?G zJMvY?tJ{P2POa=f=&9^zp`8qNCQPgBLa6SFZDlvn-L>6=0_K0E%BQe#y)?&3OIq0r z;p*Ppvkx{|8vj?umy_{%V;JY`CrfePkRld6Za)P2##7(W$E0ksFDA!F!nbI6Mw4^ z>D(e>>D(w@_TK@fHHIu54E#)oLOva|n*z>R%FkVj8u_0IV}Fk@@plW&{7=Qp{wKh+ z#*mrESWfd4g8BM75_4MFe^hZJ|7&6F9}^~iSm+L9eLNyw_P+wAHHOSS>Xh~=xPx=` zLH{u@$^J8n8~JC2v438e_~(S~5ZZrQyzHL>rZtAlKI)YADY!$M?9a{Yzp1#9e?u7i ze+m=-me3tW`~MIx``3YKjUls-x}<#y?uaJ)I7iC=Vr=WL3BuUN!o){HD<536!9=j^ zKa_oj%s%Rn_9--!58Khwnf-3Xjr?R`?57A5-y=jjDvP)ynUOB>vY!M@YYbUJs7xkA z!Bs3Hq2FQrQa*YWHS)^}W51j*@$-aM56g&`{nEg+#*mpuUD7;-QT2eaN%mJ)+{mvc zjQyIz#IGT=dRSGw>{kJ%HHOSS>XP;;^B#>K^EaA;$^=vFs(6UKA^to0|j@inMGe2XD)|Pdc3(D237g6wbH@b zPl&ajF!9?7Z7#Q!IM#qbtO2n#U(hz_3x(WVZX925o*2&;%mn1iPD&^8I}2mKi!kxK z3eA@t#mjyNU|M6yd_nu6FBEdVSlwX$(oi=zJ2kta@rHGS34wgsQ|UzhQ^MHqB{U!Q z5HI`PfoY8)^8sy)K2R9t1I_^rKHz+nR*uWs$MKEr11E6#u%FV2{Qkn&A0Tumuzl<+ zUiSL{(;7qO1KJ^dpx{1RZy#0;15G~QB$ifA%6zCb`Y=E9;b5f``9p-U|BTR`Odk#s zFZ%<5X^kQC0qvVUP;f&{KCIB>1I~|W<&?~ag^fO7_M&n)Lg_^QNMY=c61r3A!{Op( ze;6>WF=RfVebWaD?(`-fn(N}A#ni=$nGb_XC-PNc?2i>%T^u7`_D2KL8bjs-+BJQk zkgE&pA1kRGa_e%OVbaPOSwWmBkHgrwa^}N{N(XB{A=ZAv#A9g!L+&h=#|h$C0|K!I z#MXR4yQVJ`+}Ta#(cCT$T}->c#8Gu}iqeVvLSgJr6eW2jZtJj5HmtQ@zd!^z={wu=R ze^r?HtAuu*x=#F_Hr>Q(JRf;POm{&puN&alwK89Rs&p`S6uJvpc0Um> z`yT_-8bg*g#ssEK!ChRpXX9J**mBEa+R%b5?R%9@cYgYCbauAD~p%? zO2D+nkeSEWLGu(w-JjVgv%jh0Mt);q>^Bi6esdx6v6+bFVGA7_x*g@Gv0? z&H30kOJ`R_jr=ac*zYb({BA;PuRDvE{Z7EN#*mrE*h2FZa_!Z|s7+u$e}Cp~jt^f# z?INnX+!{B_bPJ4+n`XWotaLC36Jib~bYEthI7l3GFd*h&*qRR*Tj&D?_Z2gXK5ss3 z*5t#z^x?|PhpQTWz(pvVgDD-%!GxHD3Efxe!{OqXg8?xI!`6Jj*g_vDxNDkxXr7b* zoIar7R1R>ygccvl0c9Z{29*xxU_#8ngf=HXMjUf6Am(7$nhzL%=mUjObMof8cwjMg zv1R7NiAo1^Fd^n(LaU1t#4+~*V(x{l`G7HsK2R7{7gL(*;z9a=K}Y3)!69D`TV*~B zDIHvY7vlQ6(C&$Naa?x?;<`Jw<^xR92MQm3PvoJ|l@a>+)|n4yD4ockDUAJD!o+`0 zXmxVBc-fx@Olu68FUS^sp)jgWdYa1PS9ArPQssdP%a_MCnJ?!loyearjQs^dyC-t4 zIObqL%)ziVA22S`2MQm3PvqC*m&dl551&^$k-tP3`%8t1|ANrU<6`l$zX+Jt7&2cl zcG4FLqspVXuMX3dar)|ZnJpqIUiOy((;7qO1IAbSK*9Rzc=O`l zzyZ#S(QxhZsYrc3v3=&l)k-JwUlqpwYeHP#6uPgWCjC|7Wq&0wtubW2pt|V`1$UiQ zdENdFnf;p;H}ba#V}F|v*ENOi>$HE9c-em!nAR9F`)EeAPr+T^WPiuZ{ymBt`MZU& zzfYL>dxhrzUE*c`GhkX{$n0a>rhN(x{_lw~eW%R+ZxlE3j|pS{xG?d*72-VhgovHT zhQ-VNQD9nQ$Pz;1U_um{&tp4h>Aaw*k$+wo`@aYi|Dw>$KPO)H&jQmLLuMXhKh0AJ z=2Z{O$1a)uw-qw>#x=_IMm zzhYtRTZD;Eg;w8@c-a?$X^kN>kFlHPDdg(g&V{?de*S#?B>UGl(I^nreajk0I1lZf z`BGLok?#@4eyY&jz&6({UiMRfX^kQC0b@6Ppy0k!Z*%6u9!)+xO&@N|eE4po4=8(` z3uh{w$j=hSeo3Lbi9XB_FZ=1hw8oJ6fU%oCP;giqaVSN7j$IDVE~XqlmHDug(!rck zh&iRu%3-c}+0Ox{HHORwjM?;oLarRfxn}r0ooJjCg!9l|nGee;oya?3?3WiNzE5c5 z?mY3b?**nchRhd?-SmaRsByP>e)8gISJW3cPun~5Wd)@Z`A-OAkK25_E`w=M${kY+HHOR=jNSBw!l-LR&298$x-w21-8b`PZKV_Wb%e41q|n;v0&zUs1jMsV*qRR* z-{}JdYooZGH>ciKi}hzhO~sw;zrhjQ$bFrVxHky6TlJ#_l~f|y(?^W?+e@9 ze}yHt2*|TqcQ~twKqv=61Og@~cHR?#Ff|Aw5T*q|1j6(nh(MST1Q7@`gCGK7RuDuW zEExomP$;+6i=j9{#Sjw`ml9A6t-{2WfXv?PU_}H1iq>)?0%2|tL?A2`1Q7^J2SFrw z!gh%9MSpdtI+=XzCJ_=hSCKL{cr<8Re-yEOfd-Li5YPv#L5ho@vw z6^ZK;rfxvk;#L4McLTwy2!#1T5P`5l5JVt+A_yW7Rt$m&1Y8|5-$fwc5{(HW4;0-p zNPhmLp-ExFP)~8oEGe7|%(6)EESqb?rEPH> zigSBHAYfHu zf(QgG5lj$)uyGJXkmT(gsOJ^&mP5#~lrv>hKV}N(@tQ^Hl`CVybL{$c&-Q8J=BSD4a2b)3|~{RQTbr z6THZGk0W#XGo!s5$=?Z?Bba+yx*{VL^LV{!oQxxpk0Ca-K z=8G5P^U>hY2DOaN;*XWOQYnntLvy&|q+QOE9TLgKzgKt)^!WWnzm@-6~lw;+f>*gXg$5cUXy zNJx03jeIjRy=OR11jTwic8po9&7Jy2IvKm0GDDvVhD6}OUO^Cnnhc%!30$Y!R6IbPz-!92f)<2nPj01cmZ5*b2oxb#$S;RWFo>n0V}dMM&JQ z2`H3dVd5SartS%0i~Ajrg>-O8PXxjtK@frPnIMQjI5Y?%5Dp812!z9fAOhitAc%xw ze7x@apXgQWo+KphY55qtXN8G-UYNQUf%N&vU`+(VQ9%%aPzizvgrkEX0^yh-h(H(& zf{0z;J+@$fMfYbU9cm#z9&MRG!J{IHA||=W_bU5M6Y%Gth2WxfucE)B4j$ zk9@`CS~YkoGIHcdt9%_tqB!3mB5Kah!$c{z# zCT!7PqWODSv34Skn%`3_y1O{W-HlCk5%zoPwpT+WgMC<^#)V&?c=yA4EGiA%gQMGf zI-=ud;jz<+ZEM|xU2TayXeqlnPuu43$qrbRhN3qSlhXbZ0UCI0??JssErL?8ByZQhQ zoDvtiVuyT``l6GRC!9(P7%aLXS*<*XU4w_91x&5{610@|tTaEjE1lD}d*vbQXm9Ch z8T>4ct2~TQ@<^xOw9Sakoz zHmW?q1AfcR@3@)IrK$3L9n$$U{Oc}Fzu+*W)!P$QHY*m=YkQ|gl`TZ3MU`zx99}L= z2XJMpd|1z6t_=aVGtw!g^H-c!kGqwkAnq7Z5=Pl&RFryhV?^m>6r3HAO5YX5q4lwZ z@0~w&-q3m=i_(WslGQ&TL%j>R$KkBm-?wtn{Rz_iVv&_F6Klx1$Rh@73Fcb+->MhxYFN zjC2OiLxH;|!6vp1--*I@Pk|qcE;zwG4K|GNqBOi2T7!Ew?3j81#sCy`I{a!dsg;Kr>ox4?UC2ESGm!p1mgP^2g#yl3UDcy<1dU=VN>F+_~TdE z-x{loUXN7Suu^So0gctz73b=4VlIzuW7T8GD5mU<8Rb*`-BXe*ubb5Kias6+fa2gq z91i}0qFD=5+-y%S($ouZT0~2n(|1+n4IEY36p_X)tM8A|yx&BuktRRVvKL=Wa`=BP zrYT8(?c+F=4u9;_d3CSe)f(z(N`g}dUQLNnGJWVpC@-As3Wengvp2DRR45!qw`XH>#g4=%ksY~Z{z#4k7^!(K!Mod0p>PQM&of#7 z*#&JcE&5#vH3o9sXZ>!R=QT($f&A_X@W(N|Y+zVx9_&{CiTwAr$l1!<;C)#Xo&(g4 z2FjVj@!C2TDzMPqQGFKfOl->^&m?;1cg@SkpyqdjlfyVCW@G22VeI5tdiasi&8uw~ z-P#Ve5t0T*x?5wdCD%GEQu?d^g8MkbkK`WbdbnC2HCD$U(K@stEagV6UvboWhlQ|^ zd)!_ewW`lSosxE?sow))SK94&7uFcGA|L5{AEG$A@bGTKu3Qg9nK$eob?lhEu`3<7 zz#bi4V8dhgM;O5%kS|DjIZ}|rY(2T)NB7TsVXIKqyja=$IL`h*@M`=Pkk!5VE|vMZIb2@;-i>{%Kkj7`(F0?y9_=b8hkGGOzaK?~FYsCz zuRh9|_OxYalSXGA9dU+xMx4n~o!DmSt#|x~AAZO|k@J`B;3NO)MamPHN}p55UbioD zGtW3Q3pj>zzdhj=#@kO3Y7FGY z+s%sAA`JKDc2pt=u7j1hAKW-@b-3ByGBCLs^T3u0E|!!!p5m}Z(8?2jx}Q)EFdu6ZpcBzZqahDEgaQG0TuBF>Td-OV<}923XSJIb^< z@8b-KAG1h4dPE#uCKoQYn#OST|K6vMsHV0>>0i*ksx7FuY`|C(L&KsJV^dnitvwEh zXg{T)P0=E9!{IPvm9V3CA@{fgQ2Tvq$bGFG<819Tudu-(g>(r7^Wz|UVqcgTF}a9+ zJ9X<)57Qmfan?;S_T<(jFCk&9OZK5V_z435#%?;(-kb$=)wJ4SS(wNyY}S~C#~8~7 zJMPi=(zk7{6mVw&Yn8NF+ueLB7S=#M565^A4P@)vfhBC6iyQKtNO1m4++X2v-HSJa zzk)7VT>|P!l`D`>tY0x+6}7%U0yer!(Lk%k9xvLJ7Huf=5Ti%B#Dv`GA$C3VEW6Ht z?uYAYxXy3@qRo%G`#)iHX!FKWc$}p$34Zl1Q1mdOwcpAmL9BLQ#S;w7*MnHVD-wJ z6KyyoJju^d@led8a4Vo22*`tFS9w^VUky)+3|2DOeD-2kg+)5jTz zV~3YN;_z?q@Yy^Zd5;RcDC-K!8rM9hqk7SKW&%oSTi-W7|iZferHm=7>3g~ZzV-Tl0O@~-2z3I@Fjm`TB7UFaq(z}p*_+Ds#1rHFw zs$(MUy)8pqHAeX@qs&wk?r|7JEegi4i0!C=%hFxdmvI=f<@dueSuWdKFzCL*=(7;L zvLrSgtpi;xt(DoJxXan1%=cw!V?wYfeU*o!rg zQ0ujPYqr0NK3-}swrFCu8hmpYtZ|X5$CcqubpFyfW8@}hm7|#v)OS*N5Ply^zyBt` zBY(g+zT)Z|TEJ*uu^7zz%IM?xiVJLG`igpKZFLy<`{8d7+(>J(@+d|j8&6vK$`YoT zJ#NXdcQdkOih07ss&E|h^!F@JpJtxMSQR5rV=VE~;ddJI#OUMaslFr*D};5>0bA^1 z6NYMCyh$yOIDs&a^OOl$&F2x#S$Uj0_HIV5{1R1A?S<9)7_$JWHMBNfc5fPoMj!Jq zkKtKqjB#kx(Xov~zeJod#-T9|*EsYD53i3YjpNXAXn*-}XnBM`Y8-M|oG=dcDbC`? zA*F(GXlvA8ZmRV=ly5c;aZkfI#6&m_ZPOU#_l#oW5ciBR4js?-_BsyZICLP6!N9`w zH4goQ(Z?N!n0byvOk3m78$5h*;}ElM;}GL=9FoGee+Sw=?nZT0-;^)-K`8i=Yy0Pg zl?=w7F|G%t!|yh>eMTRr?PKiupV~ej57t<;99+WtF0?q(?sH9g3a(*42LDf_|8Hgf zA58z33r>yP4S@e2`)&ZPL*&OQnjXnp<7H%I4)apG8xT4+TYA>9adjiR8-SCgGS{oj z$z(2bx7GVA@)gD=+*|6Z{xi$pA>-r^W78OygVW*n8}q>EBY9{zH(?kkyfFwDQ*wG&ao{dp9FjM)G>ncrzL|nS;Xk(<7|7Q%yx1*C=lzRjg4ygS=vm zawuR?`Y&izOn<{Ni?gRi>0E59cpi?+EX;>XL)$XW$i0(4FxK+e(Yug)9HtMvcM=sa zwJMy1dWkBBqf2G;d(xrp8ZG>h7HodcJq`2wLr0>L4sG8U^-qjy^Ly^e&+mVNc7nP4 zL5MYRa+F(yRPM4phhR_T9`csTeT1}fKOoHH*)&^ugW2x5O^N@PsXVR;V=AAFF_oW2 zPqV3f7w$@j_2(^x84rcIysaU*)@nHYgez?gVue@QG&xB?bdR!kU~<+<=zGe$v}vDP z8VTp8D_YehJuCfC`7~&0V72P4hzFnkfg|J-IFGJe zZ91+8rIlM~yYd>Sd1HqR&fx@5W;Uo^xOg+Tu9{ZPvtw{^G_71Prpb{JGUwxh>P?F` z{vSGqS!;jgJ55$YiI17Pe2(g+Uq3Rx_tj8J^_oK|@wB6o0e_gBC6=qvW7ozI7uF-2 zT9p(+In^r}k#UiwUN*QCSTA~BpUcXr-Vlz(_&}pvH*6nlX2rvCHdNsc!TFqTsq$Sb zJDp_eWrS4k2q_gc;;CYfMH{v@bUAF-&?ky(@p652p&7yDlFaHcCU7cUsTfBaPb()F z*K$C~f7S%7m(ohrI2JMZ{So7sjNrExjAJRBR=jbHV_F`60$G?J_4K!(&0`r{s^Hi1 zQrxg-{xR=Uf2iWY3O3=3u&cTf4?5X|&)0<^6E1~-MR$H&I?eWc5qm0p0J3+mAFaA_ zmgo+oxTnf%P4=5?n4x!7udp~@tDC>d1pJV3=D^h^d}DNaU$Z^mWO~p>97If${}jugR>Zv;UE0?vkZ zga`yY4q$>v&K6E`wnGF*;$nyiA~=$h0Y0mRD-X6q1Ok@rCWt`5$e}-n!h6}L)>qFT zDKxxGy94rpF;MoeR$RO@EyO$1LcB9AwDP%19Pdm6@y;~1W*_Tx`cI*ueD;L>g_-?Z z6*uxX3-QyB!o=S$#Jjq;iC9K%635HaK)gJSttE7#B}5@)B-ArTN9E%lMa8?*LcBXI z#Jkf%wJo*^TQ*i4y{Q?d0g|9eOv>Q{XQY` zvAl@o1J_Wnv+QvZ0tqo>38AwwAqvg;!0A=#tf8opUsD+S1;WIyC3G7wAFGR({c6Cp z#*mp`Xyz%njdJ;5edBB``&%e(Z4I zDqp5!J?qYoEmJ{+xdB7cl9_JcyV6@93Pm;F(|w8oJ6fWAo|D7bB!d|0B%hhNf% z1(-du9M%Tr%Hg8ShvSt_ zk7^euE1k%DVeE&5Ru}lKa&?!JfN6~(^8tOEK2XTj#W?TlKQg)?!nxt|nGdHaoyeaq zjQttH#Gfg&@;Ftz>=y#l8bjs_#sT_5VN`is(o`pp(v@wqcClS!ySOy-f zxKO<8F94=BhRhd?C-j9vt~|!^1s|trZls}ZzL@!PnbL{;mxQsuT$uPT3(c1=ikJNt zfN6~(^95rMeW8%^#oFp+O?C5Iy0TMNH#;}h&6hG?u2MRf3kmUa*h04p>*h-Fvi}M& ztubUiV0@wv6x?nfRX6y6&v@m5>n`dq*D0OIe_a^+ZwM2Az0k_zT5)_E35ahaVQao% z{G%@vMwQ2xo66&lbY=IfJoacTk1H}?zO8g3{~clMZxp&cSspitm;JYZX^kQC0b?b7 zpy2lUsPg#p_~r4H%!gZ)PULSDV!9~A{84D-akF^Y-vmr+44E$&i|Gr6QRQ)EQ+Yf^ zSN6`zW1q(IxGMAI2TCXMKNQCPM?$wR%j5gvW&b^3T4Tt3z*tNlD7gLW9F@2yg>b%lChCN3g#u>w|&V0B} z=|ukL!r0$0v@z^n@v^@MnAR9FA21fv2MRWZjkmIU5e{&5jO#(RvJ#oUscu48s z_bY|5$K%_z_1!q`70O#G8V zn=k!QyzKt~Olu68eT?DtUb9#@e4*MzZuU6^>>@`vu0!x`PbDqi-l0Mi;n zW*_4??NbQT$$I%*m)ZZX;zs^I!q_hoCjJAV`TxFn*}n%&YYdrvjLo!9A?N?tbAVUb zUdEY^eLeG~qt)^{Q5gG9q0Ir>#ml|~Olu684;a7c1BKiiVC;VLx5f0EZ)849RyvWN zB8+{v(E3f6IDR@Fh@Xzf)_lNufj&?e)o+^TW3SVPapq&!XFg0*I{1#5F!nQqHik_V zFZ&)~T4Tt3zWVeID$tsIsVFZ)@*w8oJ6fO7|Z zpkU=NUf=yE9AMu~L*Estx6N;5J}j$rBHt^-@9himyP!h;jzh^WBaYwO2jchku{B?C zZlW&~+=2D+)PDE%hRpuzii_VP65{vvh4?)pA%E?mEQSFh4{UFp*xH|Y$A@|+Xv$J z_OUe|aBiXx6xA+fXKmK$si^5eT^FWJicVz@v;Nh(N%dC=)~=;GshkL?GZM zmgz_# zI`TBG`{5p)*~KgIs;i!LM^ z7`WUCh&JxGnFdf?9NloI+Iq7{Sf}2UjiEbfoQ(XALVPDgnE0KA?nI>EcM!)nBZ2s4 zB(^q|V&2TLl!7~nuAnv1{+_^_Gy4ZAZsb2L#3Oh@eE(30>x>7B*u?Mv@v`3^h=)zF zwS=y*geZiGVMyneES=*OHS)&_V}G15@h1wA&IuxxPF1|@2Z3pgAxj67WM+s$J{``V zZ_Uy$@ed2FdLIO@^HtiX5URJ{UcaB&|Fhyo z{*S`g|4Eqmr-W!nPm0)Yu>L{3?0*kTYYbUJn3OUh3eCU4`hzT;zbR_uUlU@TB*Z#N zX!Y=_IMzu(tdp=c^O$eaJcWjOV88oeW`B|5M*hFT*nc2QJU)(%br|yTp#&?i|A?3U z`@poukR^nPCljI&3M}-yA7$w*A$yUZD8w2_nE0-c&Lj~_r$fB#+kt6~Axj4nP^Lp6 zpAP%Qomo0_6gBd*g|S~snE1Iu>laIkW1bJhJRe&#k2x#NQyA4Rew^7~QE~Bmqr%v) zEKK}LLaUDz#LIp@Fs(6U_Az&*eF_crLH~b}+22rcBfq{d_8SQkzk$%~uP0vi>jKjn zLuMcIUD~IRvu|_vpTd5A?*2)P`h3_%b9X!o#6f^{#`_3A%Y4~E>0rzk#(pQEJDp?8 z_Tpu~9WbpiWIo`0K_4i%GwWl^IM+wlqZ12orb688B0ha!dEAxxu$$6}{O-co?;*r} z6``#icNH)DU4UtgA@c?27WzUVw{{%Imkq}EKU6=CA{7n(17i{pF2 zKzuJ4Tk{3yANoQe=Zn?NJxz795naK9SSps!HP+3&nJ)(^oyZ?7jQt@(cQ)(hK=HEw zG%&3(WIo(#K2UJy*6YT6xUb2FP3XgUnGfeT`tbA2hr^W)o-GjKJHbMC0ev`39N!5B z;yc0Enh!XCu^cG4i<*3Bz81F`eHiCj-2Isk$0!|qCs>H@1Pkq2+|lCrJ}?m92gcTX zz&VaSP{`d+7`raESWI0!koj%9f2MVL=qWRj& zR`j8vsao3#G1671rqBuBm~ zv<;oW9Xd5i+$F<+5&G(bnGdHcoyeadjQyFy#GfT}xUE(4r-_&Sslc?xkoki1Dt)2g zaK9&;lUSWJw~Or-(=L9Q`Est(!M8+(_(qh_+Qm8IWq&p>tubUi;G9bzDCFA3IOD|* zqbntp$3vM97b~5}e_j~-ON5EPRA_Z`k$Bl(2uy1XnJ+j$(-#V(>c-kfu5R!F_vQu? ze0ezY_S(@88?2F`SMkz z6Zxx!vA;%WxB4-`If+}Ld~?c^a{&54A=f^}Zlm~~{kUV-uQMOMt#ojINr?MPLi6DUaok@5;{Fo0<^$#l z^nt?S?<3p}2e_=85tel#^*;M(=EE&Y2ltnRvARbH_$$XT=`gg`3>yn=VL!&d$|mmL{#@B%Pjja=VMP~zWh_^ zME-3dKJy@Sm$MAt634SjKs>92t@(ht1%064uBexx`S9B&AAU?9zLNQX2b}YB!rx^+ zyr*;`|GqHx{}H;Y=)=3>W&dwrT4Tt3z?_9XP~b1UHjM4f=Q@0lxOph6pX+{~`S79A ziF~2NHA?I!2yF~oqmA)i}B&f%!gH! zPUKe=#(p)S`LMD$zOM$v_tmg9A22tf4-|4fqy^a2-<-A!a5-aUZ_glJ3^{u625t`L zuR33Yj)EVVH2J5a0(G^`)*R7}uXju{=i2uCcOg$6x%71@$x_mIsd!zY`LUO0ygA1gX~;aoC&E9mHj zOOX{)u%*e0WXph!dpYxwtnVz#gZR_cBK5xWR92S@R9}%_OBnlggo$5U=&t2>wx)R5 zuK`SJ3|XCGe#bhc;J#iT&#dn}o!Q?~aU;K#F!tLB6Th|4eS`M55HI`9foY8)vyV9& z?Ne~y%-P=)<@iiye{aRbw~~c;-cXqMeTBGgvyX_K0QVFx`#pg8{UvNIAxy}a5QT68 z4D-fkvviJBRIKrYcz#@n=f{O+{%~B@O)Wgf@nqFJAWN0n-{o zW*>7T+NY2k!>pcP$n0OOxOiqti08+Jcz#@H&kgcCIrqR^a=zh>#Yps1Ly2{B(2V!kG{e)pU>=4(LA*RVD7m}k*Eg@%5& z1Nz;|nf-q$E}k0~;<<5Q;@=ipdwNS8b1@+1V%VB}%(rNtLasg8Iq?0hln>4A;)TVui+^N3EU9#G4P1zMo6y?D zEb+3R2~2AYnGcxr(FY2n+C}sAm%q@5apr4pWIimTba3_+;#0Rmn=36XUiM1?(;7qO z1Lk`4fkJMsWNq^@*v_V6Zt-2?E8iGJgXBg`{jUXjUn>^ z^D_EC;iI2tePwim2yOGN%!f}Xoye~!jQvW&#IG#0cCmsu?iT=YzW`hF1#=bpLSa<9 z_;OQuyhc}c&&s3edDeeszO1fvBEN2Q26NQS^qwM zdAyzZu#VD+{3nI6Usss;^@LU)Ym1lt0$^HW$b7-vhrUo4RUXY_*FWgWIAhnpGG8`Q zI{2=!5Z^Tx+Ss+Bc-e0NOlu68511Fx2MW2dYwUH+oAhCve)3M{!xl;>@>>e=UW(BA z$>!o^zZo#CF=Req?nECbEdCnM+i-yE$lfp)7O9U}|IU2aPU+yM+l8^;Ug&N^Yx3KQ zm;E-tw8oJ6fcX`Dpy2MX?pL?_Zf191#f|*_LfkJA+BtF`@v`3=nAR9FyO>weE`{7V z(&k+6WpE_zF=X~}-llyD?kBmrrv1VMd)MK1#f|)J!q|ULnD{${=KrnYWq%7WtubWwF$bi5 z3Jv~qjW{8*f4|~J{yrhDy$Tcm3nAv*4~W>D`(AN8xDLdF>)2XC7+9GQh2}YTF-zyS ziW>PRgt7m(7%$*mzEBj+qVj1-zK#2B^59G1en$sG9NJi zqYo5vrYoJu&k)9brZDldgf?fHCSLYafoY8)^9A!j z`a)sUoTYhv(KXtYdY$0;Vfivw=|p}hVeFR{nh$ft%YHU6tubUiVE#uRDCB$?=RWTg zIx+TrUOciaALc2Y$S)_1y%Q#Wd7<6s?G?wXz(BkTjIH^Cc_4kEFzP;Ua~mzwm2uiA zo|cv`^OX*+3kz{wSZHl@KpfYFfw(S=t@(iYAAO);Z4{44&SA}m4;|w7R*^IwSDp#r z1Zuf(A`*e%f*^7*KG=jK!j)>hb%mX7ec=*rL*XR1v9QZ+DxB;#7fx|o3cKCb!m`^| z*yFYrPIWs9r@5Vl)7`GZ8E$vsOt+_SmfK6Xq}xY0+wCWu;|>tcbq5NUat8~ScApV0 z;|>F|%vT8IB?93SK@fp}tJ-#DSp>pLK@fqkau7rytP%tf2&)D`1j1@T5P`6I5JVuX z5d;wkYX(6C!dgKPfv_M5A`sRNf(V3lf*=CnlR*%Hux=1UAgmVz5eVxCK?K4EK@fqk zVGu+h;4OVCLJVRhSUAO9BJ6fw5SHC#!X9_IaH_jP zIL%!tobJ9VoZ+q!&UDubXSuHnmvq+y*+a0RwaOELuw4*DAZ#B55ePd3K?K5%K@fp} zOF3p#1Ol$>dSmmr8h*fj_u5OxcK2n1XYF&iQfaACv*5eRz*K?K65f*=B6uONs( z*gFU!5cUaz2!wruAOc~(Ac#QNKL{ca4hVt>gii-S1j2zq5P@(|5JVsx90U;vhXg?c z!e@dY0^!ggh(I_j2qI|ihqKbr%BQS2yRdC&?{U%@cP5=_XG>>mXIp2fv%RyUb7E&_ z=MtThI=eb2cTVZ-?ksoqbWZJ@);Ya%M(51VS)EIE&UQzzDMjwvYEg6CjaiF2JftcD zH;xE`2u`mz;K*=#J*DCFnmO3uAI`P^UmP^|;O4EFf467;9U0safqzE@K_rX{k7u77 zjNA`s0FzGwzT7HvvHPhoad!z*cMp&qsuHY;KsY)GA`p%Vf(V4cAc#Py20;YEu|W_C zE@n?0z^VJ`MC5)!h}|zUSB?v@L}2FlAc#OXAqXN56x{=e8mi`d^{Oel2Xi`}HptD0 z8s=J&`?a|+oVjpfNI(QBel`dq%{htO6Bhq>gv9+JGjno?B?2=(2qF-Mf*=y?-j-D& zKHF*rpC(|^_N)+}Z6!wTMF1=Blwd^!!onbkKsYrBA`ngsf(V4ugCK(D{sN4LG9ADz zZ~Ia_lCyd0CH02(3Z04FYlOu8od8$=0issW=dgb9(0B7eewP z@aKy`5Md^oThwe?z!HUk6$$|@YT3--Wg)%@41OsHA`mVQf(V2!2SFqx$TjxH;d~P2 zPtMZrv$O}Yv{w)&4!@2LUsAWSu*Iz^Y;~&xSsPb`ghU{GB?uxAt_*?*gsXxe0^zGc z5P@)Y5JVtc69f?mUkidr$lu8KjTdC@T^o)QK~r1{J3?jS(spwvw>jphGFp$hj@<@? z#BD@C{cIvk+-AbmZ6R!NTM1j;Hb9oqb-@V{2wx9^2!wA0K?K6}K@frP%^-+C_*M`^ zAlwiH5eVN7f=DPMwt=mi+rSR=ICeV`61R)|$E`SF;`R`x?o&d1!A;oe_7%3d{ejHq zcS3?95N-^D2!!tjK?K50K@fp(a}Y!z+!6#42)7171j21W5P@)e5JW=8N5=1i=r`W9 zCnWAr6XSui|#1?_M?*%~w!uNw90^tWi5D5u}VJ&hMOYj&=u$m?G!w^dZW_}a| z5eRn%K?K6Rytv2bt3)8&7X*=^qWd`nzGzLX;Cc2^pW6{vUW~%C`xzm42m=oU10oQ9 z5d;xfd=LUH634RmOGX&6XhYlM^^@h9miNzD-p?VR>zpS{+y%naT?Awkx+~;Z1j5}x z5P@({5JVuLC~SEl0s%!~f(QhZg$W|T)seyC(kyY5jU6X~!Qv9^Sj=D%DmZqRGaHe+ zf{?f?GkYjfvnK*aP^2b^KtP$AAc7RXoJ%p`$GUDq6`oWt-jHJCzQ&|tcb%p9jVwjf zh1nB90uKd21j55X5E)$-H)NK66^;`L$AvjSHInfA|Zb8KX$h> ze&oJKNZb!HGmnN?A}})?1Q7_21wjPk7{8^x6L2D~O%~l9FcfNR_4*vn^nsNPD=3Rn zsee++A5zE1(g*N;ihB?*tst+Z`7b|RN(T@?PD)SO_o<78fx@iK@#Hi9MrY+G%tPdU zMo8S<0Jh}EgQFr4eiH-{2u}n-1eO0&L=Dd43(mR9x66mReuxI4zlQ6F_cQIz#Qj2; zx?c)g+{40F_lU5~Jt{1@$As6Hak2 z2)o^1gk|?vVUK%7IMux-oaX)xWTE^vWLX5l?}8u#;rBrhf$)bQh(P#b5JVvSDF`AE z{u~4m2u}t<1j1865P|S?5JVt669f?m&jvvR!gE0of$)3~L?FBn1Q7@?20;YEUxFY4 z;iVvmK=^AAL?FBz1Q7_Y1VJP;&&TTn@SCiI*!`1`xPPfeV)t)h;@%Uc?ms}*(5u0k z2!z*yAOhiUK@frP_aKNscs&Rr5dIMa5xDp|Q#+tIa>c;?gMQ#cg_#>~gcu^|8;h_b z^o^;b2gZ?sDNdE$6u|tv84QU)cq<4Z!Iur$o$T_3TtQSjk%bW}avf&4laRPcnf-qT zb0V<+b`V4${3{3|usd=u;DE9EayJt|U+xj6Zkn*g%@DS_SwehQO;~bsh3#%>VTW5* zIMK}$b~*=SNxT#M5P|UTAc#PCHwYpS-V1^Vg!h9W0^vVF5P|UDAc#QtAP6E576m~B z!iPZ+flw%BXEBjb6C*7ei*vT<6$n_ND4(%gS(vz0g{i~vuYBVZ-*!$Ef%#$(L?A># z5P=W}K?Fh)1Q7^n5JceO@=T52Vp>1cY5q!`>!VYVTR@22I)ucnOTc7kePQA@6n40c zfvmBXkcbF`)*y&LXbXY}gi;VhAhZWT1OmSNYsDdA>z!kR&u(ob9lBY5E&R!xzD&LQ z72SF{eWRSdK~5i8I~N`84B*pH#L89H*{!369vnM-#*<}*Zx^Z*CI*K^kb}-3i0~LI z{pWLiSmliyXxr0PXRF&$*yeCrMY!a46}CHkI9-W!1)CyBWO5KhAWR8@2!!q+h(IU@ zL1f3G+X=>*S)yh3GW?(uj+)Y^n!fzo%|{HNj^P?I|wceVRfi<~C7j z=pG#0-qR5s_Zj?@(Zsg3Zo;m%%KNxnGqA5=T&_;XzDs7c_X{^Vvf=i2~xnIDY%vIu<9sR{6JBn>?Z{%VMzK%3MO8bjl zNhxhg&D(vDdh|<$@@grE%k@vLn zYXtTAH08CJy1n4+(*;D!z7bp~w6+%J_9KYagjWRg(_>RZg^IkBol)Im*j;%Xn`rP9 zI)kSQ``!L9Sakbg8&&W~d#Qrw&P(>e^n?!tD&N;3y(LhW-KFUl9EP-dd!ovXh=Ny+ zq6&U!9%NcnxsAjfi0uHL9?=J&jzqxW$-(|oI)BA!^|-ev3gV6t1t0uM9Ucm7ic(K* zj3|SQf{P-E(sxC1Xl2~0*H^$+0$G&4+luea;K}V$??UczyWzmTm5c6AkmeVQtOU-* z=OT}jlt(L$N;k3}x#zKUUq=F^r=xjKqd@H2%*Dd=nfATJV4Z6#pDvWw?+_b19;yRz3} z>juPQBra ziw$)&CBdl!5AEQqg=rsp5qj<{YzoU2W^ZEsh+p2lbA<^Jp5vOZPgbKnXr+;B#RPK$bpihF%G-s~ZT38riZp8kBA5T*M*$izjE&9y~H3o9sXZ>!R z=GANIN`5y!+?gu9Y+zVx9_&`J+Aa0A$k_@Ox~0A>3eN%RMg!$c;dpHw3l&)C?x=Rc z9enWAJkaq>qIZ7RynGC5ehWA`e0qKCyc8!ZhgU61JWCHRMZ=AaqHXxp#_mP~Bi*gB z){<-82OJ@>Eaw@1B=1D%`lX_5Tfv)jLru z^(hkjF25K1EnqkME-vrj)0#X6-wDOnfKvBaY=VS`gL{_7Fk;iR+qoOxmrm#98gs)T z)lGTGWaK6E_G!pn^(6@C%zL8^S9nj@-4C^+w{>Xs#!TYZ-qI?rFQL(Mk3$RYuROy% z^7lT!3ZKit=TgtaHPLYkZF677aIt$-K?f+ z=B)6}w47>BTZYzXbP7K`7o6gr5vQ`GC$?Fl>mBpqhaYlqPF(egy5THqA2 z*A*u4!?#^-Ha|?7`)sl8ncwARHto=?lk>;c!cxd^56ht|8+W&cTNrn@A=DVijk}u_ zt3?)QZbv18;ErZZO@JH6T>>|8jdyYt*X=OoR&ceh)bSK&M^E9mR15Q-x)IyzWE)le zcCg>p?YAY=7_byM3a@o3a@;ojsrq>OrTTcvsm*dMlw8tH#%Z6o!{MTW6ZH}{JhT@o%eBu#S5Yr`j*gjtzkc!!(X)9`8YJf#)nOVS9=*BGU$}HegG_!yU(50cZ8nb|3 zvJB%3_h@|S+csAUc+6ydrr)HkYd#eVYrvnwxuze;*0}>q*m^hnF7f=CxK_kryBEI+ z{S|b{DpuH~lPdp#gmo;&tD@HVN5DpRDH>?C*yBa}z@iOh9(KZwhL1AG?pOGAU=%*T zf4u^_-&BlMQRNqimVN)4bZ9|iDHK?CxT21VI$4 z!e&urem$@ts;p8E;1bbF^}yVyvOEIykHt=kD*d_e{B}31?gQJz1pUU7r3b6$)(yex z`Sk#-o|UsQ0IO%`!mzs3h*f-`T`Pc5O~yUJVq}%^BktoI^9LTo7SVTSJin!idn=_$ zxJWqm(Q$Q6`uIDxL>-PhFN;0=^U4wrN8Y1CFUoov+AS_cdsG%W&?$gY8dq?~rc{hl zcPhfM`xdqwXF{Cm7H7!fEX?BIrjFvArZ_j$<0J+2xxx&d%iqu;mP&6rv`%9aFS3c_ z{tS8t_qbLRLj|{IVAU~^_THAEPc}x080DXe!ac4nM8P-~u^km=GTj~=hHUvAaZHxW z_7==Xr!qQj(3C2;DO2ib9q4Llt>C^$X9b;D}N<7yS-=nMGfw%a?}1#P0;ZhWDz^C}yJ5Xoc3%I^2)m z*fgI=hdjJ{72(4S;|ID zwvnWOi?W3!>Gurz9r>Nd@fBC%)*8##vm1S7^l^N}#kMhhMZL7Px(+xDe|z9>T9cJW zF?QK-(&{E+@6?rg+>&GOW@McT&@Pe!CRc^o%+t&)PrEQrm}qBL7waozb6I5hg0S9#1hk(`gyYb9jZqRtv2lod z#u$g@u)WPvdyD<9I0gd?)7Ln(B%_Zz4l(l_hnTj;q1ilqapMrPZsQQ+avYMvwtolO z{#^PpN4`XUH~2C<()P~_s~L8u?Gj_*D{PgPTR-W^FOtHHwi75W6^SI*s?g% z?sH9=_f>J%rLYwJpPTu=JN@_dzMJ>|W8WD#zcFt#J(9P^OUlSx{fctv*lg)p$9|L@ zTXzOU?jK)34$;tTBqlY*>;!L!DZFlrE z>q#8bJ3pG&-RB}6Y1bw9taB z2e_wUJ@D(1sH8(1Hb!k_)Yp_a_vF_D|HUj1^ZSPoYvSZ6e{GA8)nL!Bu&2W3fiT1Q);b$`NEH+iPS|I4f&*OD>oPsW(_PeYRkv;MA_^GKWb-%^!uhEU&Yz`|j<0@*=)J`X zPwbWVu_>xyx~oC^M)u-7I%+T1kh~3{b!fKk9B3=1mH#4ce@hXU$Y>99jH1>t%c2bw z=cm;^CR{v@gKTeUpe4IIQ9O>2kGvpNZdkcPs zU>^?;#=v{Y|7JR`a#dbuW=9I|SYBe&ygNKMU!7=)a-5P&u<{VN!-Ba~>9Cy|q;YGu zzfx*)1wT7w_RdF{*U&bKYn=gBea?K~RL3l__+gsU&yb9!%}VA^wsQmSe8Tv8EmV8iiHemsu&cTf58_)C z5ZJ-m|efi| z2qNni-H%Wby6(}lXoBizLg8SP3IB@jwy<-4iv{|M?xwuP0JK~38UxU7%xerlt6wap zJqFOaXJ?N+!nrxYIS~kRgCGK7sUV0zSULzI5S9so2!v&WAOfK`2qL-U=Y<_2IC8ll zh(K^b5P`6K5JYme&Imh1aO9am5P@)35JVt+E(jtJ&JKbIgmZ!*0^!^sh#+~MaQGbG zd0~eLg!6+S0^x!nh(Ne72qL+xToiVQ;K+-EAd*Y<^I?Ywj=UrYA`mVOf(V2!1VJR1 z>KDTf5gd705JVt+DF`CDsF#NwA~^EPK@fp(MG!w#3|&K8vx^IbySm93 zKnI^kMD3`=IJ_@YG4U8fJ!(u9-*X=0*pAk*)YZpS@fEl+Ea1CiW2kqJsp78J7{~5D zrh3PiDt=ym3=1oi#!?R+Q^jxVj$z^dFn1krmJ~&QnZ3KWcgL}}w|55^K=Ok-KsZGK zMKB?X3ZkHbiin7bhkK@vc~3E*ps1*zV$M0|98p0r=fEi{=J1&lp5OmpRnuMF^XBdB zyMyoc_uHv{Roy++Y3g4!Gds{^10-0|!Nmqf2^Z(^ zoa~oFeiN>D!fS)D=q|=o8N2~!Dpn8PNK*30`jd+85=dq{t2*5dvrx8iiYz<~F-LVw zfu-PqgROwTc^z_HxD#(*lZ_Vw@w+pJCnnCGS<=PhzspRU-Kj60{#~}$9GuXzdw;-8 z-@ha2b&F+}@9y@HZoDh_bEhE3Mm%V%k1noQI(H!$u323?bGxiJjl&AL^E$i8b;$bN zW){u8Iu>9jNddV9EH`EmH07=AwFj+Vx^(W-RA(jXf;vn?ozH>D0Z)zD0q+j}^6)VslSpQ{!8={KV zCTw5;go-n+tEned7v<~GfnAm>R_T2-K*#D?v?Ow|UT=m7w_Jg;R_Fs+T zD)_m0DrDVN*tQkjOTp~+MW1x@n!T}*iZxaaH64VSY<=Pq!nLIebPuMWrs1iW)QN^0 zkZo=6W;o8ST(z=$b0(%&O?MAL0vhfZG@Ks1gO#g>(?u6CgmqWp16a_Ig4yY!Pr7-{ zH5iqs;dJ*Fta689W(QjkaxDqEa*=dzi7a>z7|GtD%)Qttj-h=k1T%|of@iKL4nGQ^ zi(>9H49v{p3vYtX(8o3&h)dq!oya$_WTyi#*`=<-P*?A89M<-3#cEftTHU=h6SJ#k zyGI~_2JRFZI6HV3%3A|xi!L7SSa;Q#xQgOcUI=Dqi$3Y*HNQ+6INQAqt6WvgtP(}> zHZgM9T)}AJtG1|Uc4lT~{R+G#4B5;~?*UL(o>o;(H6omo8;?SDy_1ollCdpX>&Dws zc0ZA&-N<^ow}Vux>fK(FEJ>>%y>SO&G2=PK#yjH2;B8W|9%Zo}Em@QyW$qNJ=^caQ z+^55pV=ufUEyX2Y6y6!xx`>sp>)iz@8?__x6gs+5vbGtNoktJKH>9?O4T>t84-IY< zuIn8OMK^7jT{F7t=6-^<>oCl$*?3o!IVWFtJV*C#kZ9j*ziH>$wZ*QRb&1QunOWPt zJI}T{WlwdF19!iPqfSRRp>dzZf&SDwEU#6d)!&_f19+bf@5oI+#ODRD940322W+qh z=((U99DfI-KM&rw@V_(C>yZBto#B(+isL0$#<-hx5ijV3_-_ktJ(c`i=00T=}P z(M;f8#e~i5@qxt$Ic-)CK15RTM;%yD7JK}suw&rqN<3=KcPa&Tn1gYyVw80~U zHLKPrLLgLd2tgaTdhltKw+5~*x_DfoLI@Pht}gnd4k1VbS1Ur8EoNp#(W0cfHdi7- zST(bX2!Sfjtnvtf9G%TY$yw$Rg35HIvsRA~(r#oUP6rG9yC1f#wFz(XaA}I#=-&; zSD;!f^)HZ={1I>iUFHrn6`A6O&P->H=T>bLH*_o@@p+W>xPdix=FTB*=!_kZIG+t& z0VU*i0|F91i)Wt(dm9T;e38AldT=F4$scnor&EYP=GYK{g~xyhu~-5TGPYUklsg0> zTn;4+A}~1&B7{0BBp_EVgeYo){G{VRgfBshIz-@ftV0AUfQ@*lcMFKXB}s_z71I7? zI1(b@5wdkx{T0`VqNIQjfz&|+mJ1L;))dUHt}rTK5Fyu4A%fGe1w>E{R}Q|4YE45x z1Uz)K?kZRsXh;De0;z)tqM?TfI%QK`$uo$+WPk`kaZL3uLjYrQ<$Ms~YshC1LF#H_ zjTl7G2Cg1_9p$ZofCzY!Y28(Gj9HWv5F(H|h#(F05P^zfUm_fvAOclPAp$u%X^WDx z%tHi~X}7Uf4-wLCWKM$!GXK@iu_W!B^oBwNW;|!(eQ{Z1aff|HTiuI|7>oQd$|?j|({cUpQ{COO>cQy^1g8QD|a`+*B%dDOA!cnmmT zr`Srq)9C%_Ys^+&l-Wx9&1b>h_3`igX0EHr?)|lH+QiqwW@_yI8xTS9Z-bcM>}?`$ zWMTq*3&P6uZAH8IJyeVN{e6;>KZ0EhfqKfKKdp9=+NA#Ucfj#>k)=9wyTC4Nfj`|~ z7v=2Rpk4d{+KkTpAxX&}HP@NU2D>=>95bQMZenj&-|81+e=T^q2xqW01-qy#j0%`t%r#WI=rr6Q8jcLEtA^8qt5L0Kh~PRNu&i8X z3K(1`b#_rS^ucwVva0rWHQ*rpg5-bCJ5TN&Obpuvx`#KVQ8CootuK|+Q8Yt zPf^|)h~PS&KCE143K(1`b#_r2=!5H26dR!7ShI^3T&Id@aGe}o$Jk2^X>S)*rrpL` zy_QnXwA4{|ISp&n8DHMf+GWq>S1~Nk&t6L*%0CtOYY+ zw3By1w$yc&tZfE`uJedNQP+84gQCjjLz4y9M|GXK&a5E@*V94ZIm~rtGN1uziY)CU zxE|RST(4s5Fyev*_RFvUHp>>j86TTY{AN5cDSk8FpsM-JXM*?G)NkfBCW);d47vKv zKZ6J};FlogH{S^7{5bxP#W}I39t3rKfUWf$Ki>1VMKFFG{x_%=>;JbTC4a1csNLWX z{xoH|KTRzwe_C((Q@@I%xBPzvjz9l3{H6XYiy$HV>u zw9o~!o(}Ce<5h&zyBHe45vt4xk+pa z@oNKD5B`Gk)$*0&vlE;9b`|p_`;*yi) zl%f{=ch1DR|1Lc(lRWX?BfI9m-Kqz?eM=*E#~*NBqe{;{ddZ8|DD>T{`)_{@m80mI&(*C zng4z|jn)c`Y8uy;vu}e|_djSeI&(8g$saZUoy-QSJHP+V!nxIL;lIaXiPg>6W&l&} z5UcwyC}CEY$zlF`s3Z5^Yl8fw2b~mV7jq5OE;(BQ4Wb-mM|s6HGws_V>uXARMR zPX~eLF#ny&;J-^#WN8BpJcwtLTi=mA)jb{D{jMkfo!6Mj?t^(oeLg?>?@ORIX23F# zq5k_61a*9X&95DQEBfy%P%YL!UIoSy;g7oiPFe21Q_IR*SO1;*RUGx-mxJSx1ncR{ zZQ3&by#YyxKHDIYm`0n?y(>vd{;2uyWHum)`Tchm&XGh5|2-BhyAPMY= zR3Ql_hxzZJj@*B*3G$PUS|9zIU-@%do`#Ks)T*zP~DWLyO>Tn9n1^->vFmQ^lXewYhCD%}Kiqp{H zlqUaOHC#Es`{$L0@ZZ-{!xKb93h2L+I-DXJdjDM)M5-%!hEtdfI3*~Kg@i5KTKVs5 zkk4?6)RmjWCjVUx3px?_Eer{;2!!l;!?AwMqT=8-nAlE=zUhrdDpz{r6j<_z?eH&b|#= z-CfaUbmmP+O8%(%?_@Su-TD1@7S6413;#V9ORR3jHUpS)hgjVkK?(EUnH=W7hdOfq zy(Y*{I*$Lo8?-Pzo&V11ShtH*0DA~f?-u?$mnHr8JxTl6{#X2WY|)c)ZK~n)U@uf_8p40a8?=@GP67RQQfC)ML+`)q zludOd&+Haj-NstIT}-=?In6H0{8ziklC+D` z8)_Gs5&ru_V8jM{AdQV3(`fP(p;vlpc-Fq-e$saZUoy-O# zF~9%L!a0&?;lIaX36jXzX4F&e5F~K`lrSX0yTas2lU&_WlC`0t#V zrgrq-H4jf;luXzBchRi9|IW!?$0=GrWge$A`R}|m(0{)AxRLBdPv71@zxZ z9Zq4n;J?cn22RlxO$7|6!n)s;NMDNF{O5){Wmx)}s*?!Vsx`3$E>UAakY^53c3M! z|DDv~6ltLM->GO(@>s(u=D$ZJx)=Xb{lK;I3?{y<}{olb69Z-OA@C@ zZzxV-M(@8%?#h3ce2PsZ8R19t-!nnPCF;M6TJYaF6YKuF^t4R!#D9&k!Ux~lo_ zxXXYwb0|cx&9?$+^xqGMu=3ykNVj(DyjOM`REzn2BuU91b^o2R=)d#aMM-T^|NYkB zc&p1&ow>=GE%M*jpm^fH9|eY;eH*m8N1@H=%-fQb{897Y$!xH?^ZV~CoLk)%{(CHz zSlx_m1~BCgvARb<3A4IP4)fnb9l8Hr6XYiy$A7;av@kuL|IX=Hw~JJuC@J%Hv1xM} zE=&6FcO>l}h9mF4-<%ia-{4uCqNITSJE^maEEoKDSyNc!y27Y{*~MH#wTn(eXBV6N zchzuua5Snl4dK5ZLJf}*4Jn}iPU`HUXz2ZSowBK}H`FdNWA*C!9gr?cJxVF{-<2U{)J94& zvyt%MUA`!ccJiKZ5YzkbQcs&fq5nQ&P}F~4*r2Gg`Ox@R&#^hpsID{roi#-NJskv| z!~Az9ga0l~k);hZ5MMoyYw?;6+ogrGbWc~3)c`Q;zc~=}) z7v4y=!}q#Hh|LTD7Qq782N6y4wTY|5mck7E2dP2X`mw-v!52lSTKISVo)9 zEJ|{L?nySU`E#|u6N{jdN1>AKr+RZB%Qx+V&BvBbtzR;w8;@bDD!jfgbxWl)i@O_< zPh%jF-RV9WT=_;^G4aHSrRPuZ5k>rUCZ6+xiJfg<9%?n&eGGGI?1F8_EjnB~kAq0t zeh;LI@&p{w_IrZ#9w}{qEQ(3nABP0n{&-MpJ4>VO_af;Zk0aZDsI{G3w4G%08hj&I zH}7H*RB{d~LEB4^hPF%HQYqTrM?P(PWOup)aOZ0~wVLccfjPD9??Bse_YQ485hAqx zxT3r_Qbl)~2%vDtQVj={*&PO*^jOAWKbB#nSG1WY4DD?$f}mzNg!n7(8`i zM;lk3cC!0)5zBr{aZaBCk&f&Akt)gu;E1-J3exM%JEvJ1fro(f&Yo{{ zSp`P-Op^YCaOCLT%0`!5j4p{AT^1QKx>A!=;YT-eZFI52k$lUnGx3yXgz@ExYvYTX z9GJTgg-FNu;YbzbBXC6P9tqNWl(g=AObc1J7a+lP`wUQ_gx_uT%!@8BarBaOVvyo5NZDe=4&jEM7bxW-#yB9Gh*R3Dl z9z;66k3y;_=j6B%NA$p>L3(rZjW4Uf_&$cDe>RRB-y>{%$;J4RxbbC?A>%7GNfmy4 zBX`vJ^2D|A#VsO??_(j-@qIi}MfpECqIKth^fpTCo{O%L@qHc=9N*`I+W4|G#>+$;J4RY+i$JW$ML=MNr8ls08Et0+5FBmAa);jPDDPPsca1JKYz7JKy+H ztI6)A%$bjGA0i#!Cm>anPn6@iIHCuh1k!u-eB;Y1FuqSF=?`$^_#SEFOD@Kj#EmbD z3>jakNviPU8@Z##mnW``uiD+GK&0b)9#YtU8%MP6=^(wwNb5$~U6#i9o=?($Dvlgq z>|iOFgItU+iL<*bg7KZ-?n>QKX<~OHyPe&oR*Bu^e#E#th`D_MM2N{;2x2jrKf|L+ z_alBLgjGx?-W$PI;@}h9llJb24J$j{W6)iV`w@$9dc+w!!)AJ?$mcVO19aL_>p;-M)xBQ%^J2Jap(}YA7J2Z z&HadbaGOM)^P z+u|cB*CrEds`dkXHk7cS43ooxGNFzwvE!avqx6@m7fD;pwr- zJ&v_oA);CHtq|!?7xLlMwvbN{X-8x0e#qK{e7Ncv@_7Mi{~0(kmE8ul2SmdbAs^LndhkM2YZ@Ztb31ByjD&nBV91Bm zg?vOqAM()!k?KmGg?yL{A)lZ)7ShEKvC4JBXzZjE^sR$ZQ$(SQk1s_BII*> zHc&%86fopN>Owx!Kp*mt856vAg#=Vz8QGH}%RM%O^hc(2IPdW%Z zhlPBY3?UzBiY#q}d|uA8$s-$)J=J{$xYyf$#JtE%c3&x{6#w|=cy|*|uiygmVu*l2 zUJhcOMb_u`?ojeRt0_R?$Psv z!~W9GB~+hMkdqOS{l7w&*FZ0H_-jc@{;2I!NM-|c@lSC`a|F295q3H(s7>RcpbDbJsr5<1g(P$Do~V^ zd2rG6oCTLNpR;%aY5yfS@;M9m2i0>H6!19kiijU4>M@z(ua1f(xgi z0~bxtS*V692X92RrXilQIGP%sAh%m6;BywF4qS+a{y7VsvZ=1*8Mt6FfQz6wruyq4 zfSI}ySGbW|8NUhn3|vTExgBeI&O#fAuals>H4x8P+=&g;=PW4Ta~7lyTu1}`a~4z- zAOFCy1}^M53#yntXF-mxV|*Y3X%8+`rrpL`J-A4_kvR=q$oyAu!IA_Q(i;jcn9)CH zA-M@E_zr~RQ$Qifh#3S>$a@l*AcBdLQHfaqJZHg~Sbxq!dRiuV@|;Cv*PgSu7BlP& z4E$-ZajQV9zujz~gDXKH3j6-=fHe2z{UH9`K80LY$#WKWz&;3SPu~I&6n_VZ+0z4I zOTUKy2Z%j=8wA7b>DwLO`}yRv(@A>|*&2TSyHOLC!Fxzb{-~Q+%5oD+#VdoVp1-Ih zo`1FR?>mvln^@Mdm1HmEE- zhCz+R5`&tt&9yTaSZDFp@psyc`TAM)6|Z!0L{bG zC0}!+^*B?ecGuKjATXU@q#K$~P-WmvVeV1siDWJI~b>>*iW|S|)j7t|L2`>#(mdwnPwn{h-WVpKJDd9qe*$ub09W@0jjO#D$gE zYua?R*B^xl_WBbbX0IkR_k3&$m*EYhqV>9&Qf58$}C2Jr5`!uS>Atv`zP{K?ulfz7Is3SMIH9>yTaZK*#poQt_d{|D$x>2M8 zMM+s3qsS#mqj))K|6@4PC>|S)A_X*xq|PX^Tri5VreG9xg;4=Bin)er6rF}GjG}6| za&QHzH4R}D?;4FF1vHAJ&M1n8-YDvnO?4&Dj3Sf4C9FIa3}`Kx-8<;BJ`QO|%i+NX2B&gAOBH%LnU2-Y*~$WK{*t6Fpthqd~2?pKk^ zTThnCKApR8>v>jgJ-4M>)!#%5(RJSjG zo*rMhz_I3@ie~NIQ%>!=CD!^W^Om^j?F3#3c&qw*r2Q}9$XnHSry2MSP%?Jz2aC6= zNu4ETIbe!|B!(yJ6IT^otyI7)ajv0SVyB_A#7%D}sD{&n@1t7N5Vxw2qlU+bh7|Bt zHL0`2qM^T4tqUU6l{~Y=Oa@CF6vsmP4g|2oS0GS0GMfAY)`0>Foq<;OyXs zC~pnKt?J|1z%wOWP62OKlR8T*4fMCFsVKhdfMd-P+uI3LF}+nyj$S2nPI^nMGVM0j z>Me2Fjm&A5Smv-=VwR+#kls*B%#65I{c22`!FQ1^NYdaHV2gQCjjLvs&|aqqQIRBu&}>N>ks%^KpZ>U0oz z4!c#&WVlr=O_8My{P8-TO>R|3_Eh)v;KI|b-cP_MO~fZZ0_)4i&`&m>d`ae$pAEdQ z2bRb4K{tS+D*2`^W9#1s@0a*@v2|W$CcAIYbMhNN{B|y0!^IWkDu^%#egtB;YtI6{82|1ltpBr-_HFpcVo|8g(Hii zq-y+juBh1j?cC6B*Y&e<*FYci@Xtv~{;0jcNM-{7ng50}3+Di&#SQ0JECC=H+ps{& z9Rfgp0woN9FgeUw4|U|udQFg@bR1{>7tq4=bj~{GXdNO@fuf|$LxiRq&Rmmp)_+af z--IKb^%EjQpn%Rgse=eC7o2rjXjtI7?5Kc2gj~Z@C4%iVbP%EGhO=t8asb3qX$WWi zo)IEYKxduQK?KpzJL@`SQ(eh3h`?lk2tjd7^0i5-FMTkHFopn+N5u}0MS*N1-d=h+sFIsbcD^lcVbxUxPr}Lj;v+ zx3N|a5z=mCPJ;+C{}m#zBq4(IhC&2p1Vnff%){VUNEf9ZrIbPhWk?x?2$HNr1eY%g zBSd&JPGO^F5JBo`Gbn@zBL+nw!omhcmCc9dL_&nOKv6&hd^>kk*BL}$4Kv}}x#=MA z90n1XBt(#J=Sov#Y2(|uZ{^tpB1HC7_if<9=mw1NDZ>c+WEf#9eLI(znaS?k^`zBz z0HiIFMrZz=q~wnpOdzuXCd?nFVBs7lw1`v0VhK#h*k-X)?hu&pXDDGXfyrTUicm)$ zr>F_?la3Ro_y@G8!vs#pI!vGfMM;^52~Cj%E=xud{!QBd1CER&oD^XK1&kz+I+(z6 zA(9|#3Ts?f7!@#>kZY(g!D;AVLQ^C`HJlz?i)u|nL=x^DVFCq=B#=6oAR78ef=<~~ zSMm%dFd1M%P#jbJpAfWx3I9Ppg9%bsZjqWI3EIHf!Df`V1|pJhp9m8uU?hRm!31fb zk0el0d|?8|8ceWA0#!^S3FPQH#y4P)_Ao(Z+HI`W!-TXOnbTl`%zuRmEJ>Iky`eCH z837aCiEHKHUq~0F9;KAR1Z7AWg$a_3NT7P?-Q|nI2ov6gQ=~9K>S;45gb5=CMPb6i z21S+4hvvS73GarY8c7({bp{hyLyRP(gTQkbOkgrZ5~L}zv=K>o56>nrA+o2s?*;ez z+NY4$n91(@ct*ZgsoxUT`y2m-2pFMQGy)@R2Vn&RwjxGYjB2sgaX$rfl0WJgfwCMU zP@5DZOoHPv0!wAz5?*+GVNXDUQZW_0EhNy#5Ij6mkt7=eYyzzDHe zf)O&dnd_801S2eh5{40&9EK4>9XUp*3G$PUgAtZOi#kT&bgW|pDo~V^wZRBnmc$6# zvs52OPB6mB5hGAQj6muz0?P%AAZrR3L01?RFpQ9Es2IU%*a9P{hSP%;sMa(DMmQy6 z1PX`|NF7EH4LwHCDVyp_o?!$g14amnW2!HMpbbXY0r?CgNL_8r5nqhc2F?zqQQjH| zjBvk*5hx%=Aaxi)8t5?s6~&iaaBRW|R58T}Fz^jKCTqMo0&N=P-=GWWWg06j|EI-G<1vyA9R7hRZCD zuwNEO*h=3L<~1g{*Kiv=1A)!gaQ#>b5ir7P5Q`%mi02=^hJQZCe>Cn%;1d=Q)-eLU zMdJAW*$DDE2}yg8-?C>Tx{HBq20NlATo!gBDfwf4^@-u|AOvMOoS@y)ba~gb+Ijr!7C22XNHx#}wBjC#iXa;VKG(L?Z zM=7Q7MHx~?;fo|ALaE@3%NK2oVX=R&U+QTyD1V5>=_+I~Zz%6G0_B|xS zFHf~+B@WDM;(=A}G=Qo~ca*O7z`^y}|Jigrz#^e$NY! zaWw4rEN9;aA;^AcGdgn}Ny#6z7zdeSLl71o1A@e22?WX5h6YmZ5D2mllrRXwc}BTO^}~-90;-=T9}>=Byc*`K>`&hO3K=R1TIU01UM70PBawE0U5wY8Zjcu`vP*kAV?lu>>PzY%|v>cL+wfC6q9Xz~nHD5bDS=LQRmL zbR3LuYiLo&2%L^}j6em7lCm}!fy*m* z>0N;B57zcR2IMFEZ+{#K?!WyBP}_f-rLjNrF(myv;K==%@iwRI&rB{J3@6#VX8Y}I z|7{jQC3u3A`)_|5q+$PUsaq<={>-02J`Ki1cBczyHShl0)M~Q(S?0|5-@Y?My8rgE zNa1@Ja=aUk=z+U~^qwI-FyiY7tOEOQA4k%^3y$1>`=RWBd*YiD_>KLyN!N&h}LvULx)){%?Wk+{~e$dJ}aO;Uw#UF2Hps_!2R;`c3h+N5nNQbqYd9MQJZKzh%TwtWs$Th{02k>L8g9Msk)OJjXLh@}4j9JxLpVe6Az ztWT27Yo@F9$s(xa3#bI^^NS!2>r?8MO0hn#L_S@gk=^Nj3EcVi$EQ}4-7hnzKF7tj zpR~XcZ9fyF_iSnVS5Qpa{#7K{_OF3j+gTcIe<(@+!8o$*kF>Uv zi?)+&UbCudJBy%_Z=e#i{hJ^SZI`;GQndYB$fs?O>`wRF;Lg`}YBkyY4s*t~+`Lp0%A^w4KDwc@{z2=b!UZw^W+U`N(cJ=c$#O z^NT0GfH{xP&S2ah3lZ9WQc*r0DSQt@j_2Tr9wHs~Vf3YLsT4i%3*^($kL*tOm*8Sd zx4RMJALmUheRlj-(>ligowUOvAW*Zlw@9segHRg~xAh}J&|r1!je*F8(4 z^-m`0KLJO!{!!L?a?yGcx9(X4t)GA0OWjgwvhE|h-MXh%4eS0X5NX@bLki!^z!7bK zI!N#N^R9cAM%&LP=|2@mwtddpPA=L`;?_NjpzZUod#PJ0P1b#6w_EqrDp~hu;$9fO zIE1->0Yr#bJrl(4Y26$5)$kDV1azJ_8~4&W-8Z5S8b5*|!jbRrJR5bxzkCi!$sg1e)8fXv=ANjT#}MMYB47=lbDm}5q1p0=Y5u~Khg#)aI1YpSh!uxNouY35sAf; zm{Z2K@K4G$O;}U)$%|(}35z)~IV|QB>d0eGH9>yTabix-gBGS|7kVBF2W+C~bMjft zNjiff9TR+8hI+5Z{9W7IpR>5>{TwbW#+)u8?LPxY#+S9i!p^rJ~ zludOd&tgtYhL}@O98>-I5X|Tuj*&5^7b2ghV8B#`LPLhmar7Gs+@L(}+RQnA5@rMU~Bm=CK&#-tVBOKD;uj>n!FZb8*eayQ0iFW~ais z<2fwm#AJv$NmFFuAm;RYo=qNJiR`KFAHWUo=bUfP-Xd$V&&S(fYu|zk&%N;s3l?5@ zM&;A6zkA^KHJ}?DpZk2QhYddr|L)lpUSlS^|I0HfzCV6yVgjGuLpv^o2zLIZAZF+B zdSv)6)_qVb{hJ#+H0eHqsupA;5RBL_Cu(1YTplE_RA=t6EdvQ>Y|9|wRcIl)?$snEf7G6zC39?$z`|pI zgjg&A2^rh$b;=zA5?&4^3?wi)3?zg)a*$9H-_WZ19whyune|}b0O&8S}1mV=KLlCW>vNjNetDX?#^`!k5<46edINHBM zamm4#5Wpe?A$1Uh|RDmE)!xj)kHJl#20o9s@fFO8~f8A9t z6bM2AAqc61Aflm%Ai5w@UCA>D!eoFTL2)dk*Fs>%?C|Gc6QyGAv=wkM7GHQ1xYOOQ zph+A5$l-k>@)-n?y4qMfLJ)1>?BGo(Zw&+l`5!j${Q^NKAOsqUNL31Gn6bKv_By2T^$j^nDFrmjkTMEr zGEFKqUB1|csAl~pn$*)~hzV#$46y>5g$=PPn-6q$6Kz!28K7Ye@g`b22t0=Y8YTmv zk*3InBDskc*>)2R_~WS4u~ix1pHNOQ&6^>@v;}yoFwMm{(IL37U55XE;k-rpRtPIhAW#FqB0AqtD|~oAgi9gNb?RTVUUK&VUQ-&kwcoA zAV29ikmkM6!u0G$(81|g2OU%Zp8}!YE#e+rmINIiAnm^eM}m$rf({A@I!GPpV7UM~ zWK98d=nA6(20C&LPZiMNG;9GnRKw}P2T`qQ2++}wpo0Q}4pIj?L_-fcbjqf>l4qcU z$pAWn;+X31gJ4EI=#ik~L&#^KL+WZ{kqA1pfwO}Tqr5c`pkok02L%Kjqz-gQ13l=V zqWIhej%`2()h$XMQ_!J&9V5;=4?0w)9m(@}&>?M(2D`H6u}CipqcvC1kq!!r80erH zJp~=CpP)m|qo9KsE70+Nr11?AIZ7!79m83$)pZ6sSVIII=^*eN20EAwphKD>7m5UQM0Nlj73RQ0D1teLy~9k*@%k)| za;#yF-Vn_3e()~Czr!57W;x6;Iq`ASd4$AKJ^~T$72TyMKZX?U5`7$`cQLM@YkPkO z+Lil*|3HHG2mc9b_Xk-HcZohh(*G!qyi4>1EXYk~;!7#`jk`o7o7dd9x*%{mL zZp!U+LrvAq#jimL1KCUt1KFXD9Awu7`ANqC+24j1I{)<}1^8)d?}>?}aYN0+(_=$; z9BXky(X2UcD81kyJg2rn_#n~|FG|YVKzOctLiq2I_P>N9A^ekwAF-n^mOKT7@T3mH zvs{4ivOWRfb+xh;2H|rJ6~b!|h=wg7ylRM#6rftu5D@;!)KG6-Qa}h#>L9#m=pno= zh*Ved48k)RAbe093+X!$0K#7ZD>3rcVFq4LlR* zrzj~PgeP?nUK;2jJQc-93UIWkw>PKWj;KiDhWLsORZMSPl2gqY&PjjkQf1n0tkvJT zOuLae4Rp&KR?y9ovdH58`JyoT z1_e%Gqh_}*rJgo}LeM>8P!x18Y*19$d}yAEq3KORQN49Js_P7NvxW$|(?Q@l40JOY zK({nSmNr25BA!idT}Jj)cQLr}z57vdKHj_hbB4L^2W-GN-?^Z9obU7CeGC5%bMqoI z*FvyQU41?6aQ6QJPrg)wRM*@qVqHZkepOKXOQ3n>3MPOmy zC;%^w=Uoks2No=qeWO6MxsHKFQT`YwmTweL#pZ7mgnqlO@y9jL13mn6l9E4a4>yt7 zfIs{<3PfW;CFEB4gN1YaG5i|^Qoh0;u~>pXGPXg1lsg1}`~*rE{$Nt^$MSXe0d&{} zC=muzS}uCROzsL^PcB?L4H4ugwE`eFVY%IK*c%n^4!Zx#H?3N-_P`aZmTz8rHSYZP zzJv$Ceu&=w1+*|d9YWw7ts?}s4&NxC-Y&@3_>BVQ<~IsR`LkLn=Zj2hgQGjyA48Bo7 zstv?93ZBjeDng(@zEJ?`5P~!?`9=XND5-7@AynTefGqn)ft1k^;VknAfepeJ2IRS;45L-rl7&}g!|LQl&0 z6u&uqlwgG4Lj;WQM-X5H_$U+pULd{*06`U_@Ouvj`&SA5_X$Ke5;yz>)ncjtm89g4 zfE&U$hbdFs(3$DX+4l*+Q{2#*)2E&P1dhiIER}t8ShQIXZdkiEd)nE)Pr$P$_W?sg z|6fBCe}i7=%)gVA{89VnFqvaR1Qs3xBE(_|M9A1?tyAt0i1249VGx1IVGtqIkwb)< zAV29i5aA!tq7D%_9qSN*3gG($)Vl>l;F2Un_!nva4>%GcTtNGTXG-9~Qb346>L3Ek z1&APP3id)*7!@#xkZY(A!D-k6BB+Kd2meO3rXe80GpOMSq9Fx@2&4`oh=v{_=#))$ zCC?xNlK~&(8a~edD`L96)mLx=w z-cX3ZjQ*R$lAF+A22buwK7|F6jFw+u!EPZ>6hugHGAgmFJEA3=iS=&|OHa!rhdX@= z3aGJ+?Ca{A!(3O%H-}#fzgc7Vn<0YY+bs@$v$u)*-JS^uE7P|X?cyR-i}}5nq~woa z7sES0ltq79?IN{F{pkW6Zx>lA+mnB**+n_~HfR@@pv~ya4oS%$HP@NU2D|9L+ao;{ z0{WHf%)+@{9RA%NDPOtHu~=dkGq#zilsm*OPC^N@i%bp+-G@5z(0xsipLCqi{S>sQ z+eJ>tx?Q9K`1S?$c6PDpy&x`22G^IfRR6#D#o+pdyeO;dOaX)Iq|Pp~94!1nay61Q z1-qy#j0%`t%r#WI=rnY8vFW=#s^Rot`=}v;>(8Qw>N-=v;5wNMat}_J;u9G^uC=K+% zbt;OT^>M7(Mf+|KRZN5HE=`f8odnk-+k)$Do@Zff{o*XPz8QWmW9z%Y z*5|QxzT5j){JYpXuQ5q%ofzS^;x|u2ZD52|AQoG%V}uz9uLF#*2GwG%uO%t@qmB_M z%P|7ANio7KI36RgRA=spY4@h^!ZE@b!+mEt`!F?x{_xYfysaog5sF!H-MlGM%V@U3?oQgZOjpUXKmo@ zU{{p41_C2IH(~?|h!IE~Mvw-2j6g-P%{-1x7=bFL7=avJ$JqWJX^#<9rrpL`Jw`~o zkvR<`$oyA~z>>rW(i@5qm=PG^R6xtY4Uxuf`*M_0iV>6{WfUVwGQxlgBe;A~7%{>F zaS9tX!w6DOn?WH)7%?b{5f(Nms%$Yfg6cz5_RM5NAu%^&v6>sG)Byv9s+AIvlAyTb zCJ+H5>+nvdiESl|-uiw{8^9~9*tjvt>3v_&xfz50DnE!KaRq~wqF)dzY) z%$>44=1wiEn7cj}Nc}2~M&b7Y$0G^W)0x{uB+;?21aCDYA^L2CNMc{K8Qr@dNy#5` z2c!KPS7T=M*5IJb1|%{6je6FYBZ(F_>SM74Nn~s@>M3^!lGqzc7?NOeSQI|gkw@Wc zg8Zc8MB&##3tcespde?asU05_)I2;r_9Mr!_Mo6>whzati^JURc#pNaFMsZbgH`7q z1K?z@;}or*GLKW59s}T|fieF5N&CCu$Qb|gXe2epPXS~6qzc8I{9B*}5sxvpWa*O=;Zw~k0dqhIXW`uHwute^Vu{tw*k%Azu1zoAEvO#PKLkpc)n#&+{~qed{r8$6Kj}FB z`{B@{ZWlQn>voX}6eVTeE;hyZxh(0wA3@qb7)Sc=m++#jF@6f@zmqz<$a2Admo){u zs4I*Lm|e^@JXPL-bs9Rm*c9Ve4W|dULA9nK{P!17LyhrMK>wZ8*+tRN`|mnsQ(eh3 zyU1j)i$QTr^;<#E#(zH&`OGd#UAbLsit%d$X9q{2yfqO1`wQ8?Gv($!1@zxZon4d$ zdjFk@Vt02OYj)9M{8TaZ-^tN+j9urE_I6Qa+HI`W+r_jSnbYi|%zw3uEJ?d4y`grI z8R5S_1UPSSYoxKsy&R>K`tQn+GHN3wnc2v_s)Cs?+DUX>=D$nUHiJU{eZ-)s|Guz6 z(MIJ%a}dV3_fROR{`;t|Gyk16ME^Y<1fIkEcP4}XE=`f84K(mDo=yDs$e!vx9Ng>6 zf9Ex3vik_0G56nZ3lT8F9YKcr@3)7bjt`3R4vxPS{r6)~E!O{?NlN~x`|p(H{yVj- zymj^8sb9rW|NUriJd$8Now<(@NsRBmHy{boXB$KkcR`!cy~mQ2{897Y$!tIp^ZV~C zoFj=A{(CHzAc>4^Mm^;YK@xX@5{I4#z>KdZP@fxP+RvsB+J`!F|Gg&2PdbkOephIr z3r75R&P-D~`tO>Dr^jaxaIE?7qFH|6SHFaEh*IDquJz*HCea)6n6RCjVVETsb%n)tZLz-!G+x>c3M! z|DDv~6w%Q8@46sTUCA??!eqcHL2)dkyFt*#e?K1i45vt4xk+sD-?f3O2lqgEYasmh z7qfxtzf(Z}oz&qJX`uJtsc2F1Si>pizf;B3eW_unat{=4pB zMQu|5{UmU_)n%zp`c2t|N6j1du#&THgI4!sv>Baw3Q5TyHUFK=2CF;2|IWg>)otOw z$6|@q&DdrDQ|=I}dv7RVR+q_P{(Gn+_up%R{G{Xf@Arcirl*T*b2`@TA{8h~%Di1{ z^53~E>A#;!+P^1`^xt2?i?aIf6wrSsb#{^Eg8wdS3U*Of7!@$Pm}{tZ(P`-HVw3-_ z8cq)$h-ytk`0p>JhU&jlK>wZ8*+tRN`|mnsQ(eh3yU1j)i$QTr_4`B6#(zHz`OGd# zUAbLs^53Tbz?4rznwTmoCyC}V(c99vY*V`U|bW!S2N~!;@3@M{FQj(dC zg#YgHMPam)_1D{^o;HI*|9!-usQ~cNJ5RAR_8)pEN&mq(a{r;1V;OPhDRP1CNj9(9v)XxzMNr8q zRDzwSWH^64{;Z8gS?PE)lhw?5<@_ja{(qca*k23?gm&Bap&3 znQ%ng&jRVaNZP(5ib>mdLV|7I8PwX&(r9~+r2lXn+4fgh+sQ@SNj9(9r)oQkppqM+ z614qBAPsGox}{RI{l>_rZIA3ucNcKyYdf`??C#2(+V=R3wX-2Y+wqOHIi&DSCLGcB zM}zb(m9~%gN*)X28*7gt=|2ibeq-&GZ2CQml3aXajl_LpjYWohV@+z3D*QLrBDeV) zYdmf38*4hJ9}AI=>*JBaHf#F z(^9uon#}3QZa1f?Rc%fmAalA8k+%H_NEPK1aYWnC1?jy++I~Lc8H-je>Rx~Z=kzl` zZBDZ^+WsVx{s2d|{ngfXa?y5@&1U}m3B z(tiq$oY}9jnN2QcHi?_rEHY$fOHERRpV^T+>f4Asacyp6k1XK53n0?*eI`=)91D(U z-LpV?FO$|i7hNOc`#dB#zRw4>@nva@@3Tqz&%lx6`&t`caxuOno7eoe8ebMcC6}NQ zjPDCT8pc=ZmP#?cFGM~a-^lKCUj*)a<4dh3yO%O&KEBU^NXPfNNEPMthuRy^Sxq7+(@+lUM}fJHJhmx~0;@CPj8T zn?$V=o5cM9kCwUpQiu?*cm;^XEBtpvbU(nCLs-Qt;(ddnB%i>Sw0Di{2l#b#SL1$w zA{_bp{i{(ET#?t1l>AW-VNe!B7<%JC6j+Ms8}H&uy9DOp@u`W2Smdb;SkkudhljcYZ@XP z@lPBAyl*|d9+t2vtnOA>>qZhI7(~ zLsX{S##((iB<)7#v~Y;bVGW0{B&~w zGDbYA*AZO4D2(Bd-Ej&VHG3UF>S;4542O&u6b*+gY*19$d}!W`G4AaFMfGupQC(-@ z5Y`aGA?YCS92O2?GK52>$eLq0C)B&9i{Xm%rM*@rYpl&Sc_mY(SQ3n>3MPQ-(0lpKw^xnw3!12I> zrLz41MVspwSl}ZiI5GDF6cwBI0}TCkUE`1UK_B$+`$^!j@A(Z6~Om5sJDAzvFSkqu1P*f@L|&a+i~QB1aFB5fdW2AKwH4X6~!CNCjpnwk&kUE4Q8u|wbbjqf>l4l5k z$$$`o;+X0mgrLn0laC^wAq1%_H%3hl5@-Wg4?c$S)<8T+@V1B$DByzxqz)lS1O0;p zRJ160tRVz@kbo+t4-$~0>$oU6%RE9*nRXj%^#~#DM&>kxAoE`l0!tDhNN*@YU`8N> zF3iK=LrCMRBXX2diV&0`WfUPuGJ=2#A-H@|7!kt0IE9UxAq1(X&7cq=j2IL}2n!n& zRW=`*w-X`Yy+GR!a8%bBLSPLuVL!lh5O@wl2uuHUDVQ7< zrU-T9VTzg{Kj}DOip!xz9VT!()?oq_C`!saOlW$pg3FSDgfEizKY=3y3Gaw7fdU2+ zNF7XIxe!Q@H3gWUD~t*lOvp7}_<*k7TB)lua1PT~P zAayW78t4NFR1_b>!LbGtERaAI(?9|_x{iyIv&_Q;m1(!JRu2=>Ze&h_2{Qi`Ca@%7 zg7k*M1ZJ!P312`OAMKH&lv0?W3@M{9L6Q*(R4~Eii^2#KERb+HjGw^-si)1L5GITm z6om;38x&PGADS$XFskbeCa{JWNJs~P=P;PSWC$ckQ)Fo;frQAmK*II(Tm`Q&NgRRu z8XO~Wgs(sZjPMN*U;4M<}CfCCHXNTNl+Ar?!JM8-Cwo^ppEiElv(LlR653pj*2@_<84ke_s%fW!Bp zg)SI*FM>1E)Q&eiG!IW-luXxdc!*~0Z+LLB*Kvy0PnpLlP2mh)8W_&_A!+}sI5M2^ zZW>8_FMTycijm&8{Mdq;L6qY1Tk={_8!i@gC2+2)+!hMM)pJEe9M))DvMBaiK^ks!S7J5X$YJ6{%8{^piLxoHc>S6Hc_W+sw;VB6PXM)F({6y{u>C|*u>u> zpV>sItF2Ac2Cg3b0p+cMu!$dtHjx6_L{euHrGefiQqiL1vB@S<#ndK}qwBaRIm^6F zRGD@gYxOoU?MCJ_n<(>NZ6Zt3CQ5IpO=L!I6D4_iJ2g`iJ}&4B4=XV zCQ47sBu{K&WY=usCxN=ofDegV*2!K!_&Sg5^>Y#S{K@zFIScl#kAJsUFV|IK6K^v$ zF>z<{SN|6x*u=kpSWNps)crO5KLB+f4Zjv2=YX)Xi*Y~yqWrVtN1s*s?0Cw1zup?p zovBaomY_o4EcZgB_ z8w-viCC^MYlfh&M#j%jC zg`iEi9pCz{Ot#dOo9w1=yEbrkupP=<0}*cjFdKNL_~{fd+)nCDwlvU(+o@<#@>nz3 z7H+4CX}Fyny-Mhu^d?(n+HI`Wo9wh3nbSn-6o%VJ42p)^7d9xWY(6v( z#2EKJ1V#0^y-{6f;da&#!|mxH@EjIyXEKD_r75zs0aQNBv&mig$e!wc1l;)C9=@_H zIOQQ3PI)RY1otF75O~DnluLmt_5lB*pc_DOV?69t$oB$f@bB;oFEW$ekIE_Kxjo*K zzl-3P0@DLiU@=JJJ^4itR`|v5bs%BbboTTKB+C6zP$A%y*JO%`b#S#dTu?-ER z+#wL810@dCd-6;UgCL=f9D>vY`ANrtAlpL=)6@C&oQ`#nKn3uH8S3r)`X-RTWl4}Q zP1>Ktks#qC5hPGRkU;7{0?P%EAZrRBL01?RFp!XIs35^<*a9S|hSP(UsMa(DNcd<3 z2^0_{kUEec8hVhRQ#RF=JOc?#29OXG$5dYdK^u@TgM8-KOI>a35g+c?2F?yvp}aK^ zAmL*XBv3$*K8<5@h}> zNMK2V1nCV03CvhMy0-(;MX5(Ar655WQbs|7BqI)}?#a7+Q5Zo&{n0(Cr_G=cB#amo z1qllq6je4K8vp1X_Bt5Vbp{exLj(!wAn+Up5||7iL7E~<8z3P*x)<5@=-%~oPoCG9 zrAy(y@@JIm5| zw-VbbV;QZ+k?&T19LtD%9gvIYB+2GAcoSRSjb;&4axf~vyR#cW8s43ix}{RQTX{3& zQ=k>uo$k%So$uXQYBkwCggN={?4k*_{jSpXogvb;-w>&yyb+FQ`;9?*uadUk0>z~5 zw?u+%KNQs3&eCZ6E+qXM;K;Ur!rD$Q+D@{04fe;>wzCK-IUJRs?Y9DHXuH%cm7?vp zMm}wOWOuqpfIDB?snulnHq05@uH(KdMB4VMozYv_@57BA zk^R1{{XWX*?Ti9UNqzb6BaNSyGnFdU=8EzjP_=t4qWitWFcw950)KxB$)JCgIj3*O z)_}-do)~JlmDF%={O<8JvMzQFTGqX4SY1!U-dQYrawvOCDSHZkpXy5>=l!!x55Vu< zUD3YoX+G!uCwosqJG!vn2qm1#LPye`fRD{>>ioPt`R}y8(;MoG{Jebr8=ZY-Xvrbc z+=ue_N;X35J!2+!lk3LAAV4D?31ab(`d$i;fUt^(`1>~G6Ihe>-Ug?m(|r#*tA}rJ z4t?cOgo~W;+U3;?4@Gw|R`lR()C5=OQ6wdQ)I%hc#Sn=;Y$ysWMFn9mg|m>$he%i| z+e<;T`4{zVyO+W#+YjAKAv9~)OA4Vw+`Ei{w>9@tm_rNEbsI@a{;1uPAu|bxh#t!@ z9?4z`DYtr;k%ij@M5O!@)Vls|s)!a#0wS?CVOwk><=SLoP1RlsJt$!T5hjNPL_!^T zK%^$fPdZLON*Rzu!b0JNe6-Fuy6~LA>1NOk)@4r3tlWRz#Z9B-8+IC@5y}Do*hAGCV6(` zPIgZQH=L7uGWWB4GUpDtC-ZsmzJ-5xPlgwn$?nl|%CMKh-35b`5CMY>Kn#P__fn8c z-T1)bNvIo(`pG0Ef7F2mWf55DUJ6eDFTMBjL~uN?V5w{`1yS`n1{Ot0)wq{}sMx%h zLg=^a8h<cJi?S>4Q4fw;q+8`PWDj~PRA1s{XkKwO2NcjqX#9|5l$k+x2 zQtlA^aW0fF{K4d~2Q5P#_S|GoE?hflmq-IDL4H!>gWLp$v9}uzdjpf~4!Zx#H?3N- z_P`aZmTz8rHKJC%FTtYz5WRgKv@ks#Lf{;&BLr%OeIBW|yCKu`@&VT*AGAE5w2$Y* z|{ z4e_Am7pb8l1Pb_|C8W>Bk_bV1LlFWq0wG}FmJObcH1^??qm)vFpbROa z2tkq&1XKvY<%`0I5blgq*r*vokb2q-3K7DHK~aRTut8B}^P$1=Ue~(|6a_+9YnP6O zt}}$d8sc6G=^*eNh7gz}LXf=_q$#qrv6sTJJexeV5!qASyMl|5-1W7W0xvU@-Mi^Y z8QXgYo&z~fFv5ip0V6yI1Q>zOhFprn;fp3FuE2j$J{y86MsbfFs<491_wjMV^H438 z`twOj{s_1syo*7Z;s(AC$#bhViW@p}`pm{f$mMYZOJ(n3h~ZigZaAL}T|sL>0I*`| z+|R<pdG zmf(bpZ6-VA4#5e}g%XAnm>h-^LLC(xsBl6}ke_rMobUo@QO60KlXaXx1&WfgHaLOn zk~rZ-r2S{%$QLrcOe3W)DN;b3KoRDj%IKgSy0w<`3D+iaN zTGJ3X;Vabe1bO(80^$TxhZ96Yj}vstrn-`6IDyH46N2KH>Mw)<7H8B;ih>hfjC_U@ zq^>q5iID_t;OfCkP~I8{obXjPP+wA{fH;BF;RI=*#|c!lD0ytc2~;t~3FPQHE=tZa zj}ug;-NsryPDs0vISnVs{8wYglEewp8;TQ{(Z7%(xrq<>lA`2OY#_;K{$+8=ONyBw z;)0V=iCyCHLI!7I{e=waX_@573mK7Jy^wL#vAl;hG125x{~9)n&pBR_`P4grw-GiE z2HgA3Tvo~Z7;l1at?~PpLIk~E0b;(hw~OyWJ=o$E!t1~`z8ckHdcTIGQ{o}Z6ix%dkk$g+sLy!`?qb`#@9kQ^yuqIO8%(%&}25)M*m)gbXSP% zS3Wcg=eBY9dlgc?@}Xm~#5QJZGgB#dh;4iolrY=K~A9NzYIr4*}ujMv-;2!Fv?EqY$MCT%IljCvanzq zb(v8CvyHiiY8#z~8=?>06lGTpv12i+H4PDE|2j2PADRM2*-4#k6b*fpU8iiSD|u!c znGCiuD2}QA1_;{t&~HILvyD<$ZX284e9#7B$6}PX1|rJ-4K`4HXbKo*Cv~<_8t9|! zR1`ZF<5;te)sDrGrBQY&t?L-OXd~@yqsp|~SgW^wdSQd2 z%H~6pMcGGno%ztLAx7ELLEt&ehh{QF*`+D6w38@%WLHu4=tEy&adtd9n8ewCZSk*6)Fy-WzlSC?Amlk%wa*30{eR7iZ^XCW*7(0&?}C-v$w|0zg6KL+^%jeg^-? z(qf9{8aRp(;udrP3uZV`;m)8Z6>PnvB6($2-35sJOeF%a!zWhg#&+v-Wm7B(C*%TsB+O6Z*QctvH}ZLHPfm9!g~ z)9{MSVZ|#fNxUMxp?HNEy)Q4hD_>snDMpcGgdx$F&jb;ls4p*S!I$Suto!oP(=y2u zUp}&PU;Ynfx9^qN?K#*^`tmo1uMJURpZ^Ws($qe4S=D^`<0Z!Zafo1_KLyh0%YPEW zx{bCm9^V#UhH5drKTA^bN8OjFEcfN9P3p^k8XRwVSqf3{o!s^a3%9&yqWF+FH_yJ! zTHen=IrQk~NlN~x`SN5oSl;=4c^1wsZwp^O7E3H|#x^6Ea&3zN$O^}~-9AEx&Xi>L~oRf9iNCmKIF!gTX%X4kgm;WMZ{}VXUm;Vkg%<9WiKwqBJ z*+!NNzPv0f*hXDuRKRRwuA$mSr=hcrO}@Nph)si0t!W5f{=3vreR&G#%ac0WC>nZS zUZ-rTD|u!cnGCiuD2}Oq1q5w;`7a@#*+!`=w~bA{yfzS<2BW++5Wf8P*g*B=DWES; z>TIJl(EIXK6q^R)ShJ1QrooVxOWdIs!z;~>N@k~Swr;Y(?Q@l%$H{}`0~;eS=vAZC-7`? zKRmLhy7vUv-w(gyy7lFGnVIYYaPXwOAAaZH%YOwTV1;jh*!}RE!H@qo{!bTQ{%a7_ zaRRnMb^PedE1z?a@*cJz-tuSpzm1x3Rrn4`$scw1p0eD%r{a|}ukO95v=m+sZm+9* z|4roaAcOUE=Dtpl(djOW{?We{@^t^thJy_1v(18x??O5B@%Knd{-{0lPi6zinBTo; z;T&YNaPMQW1Y~4vv-c@?2*~&rlrWIN)RDXQH9>yTaoqdwLkn9l+=z+O)6~8; zxc8cer^nu{IM&>I(X73D&lz8bFj_xl9>O%a_q=4#z5gL;|EoCCz5fC2r|l;U7TtSh za1e&&f_pCu84yO7H5D)jlWV9D#%bsvOp|-B8e%_TRBIZ-z5gLKRQH|&y7#0G!ia|6 zz1Ibi>PntL7$yUR35sJO{Q!bC?)@g@GYBJf<<_#vz1Id}KVg)&2Ex6+iVd{=gdw1N z&kPR2NCUllPerkxFpf0{Q|%`VS?b&glAIla%~XdkBuqvF$bsk72iCvBYj? zY%`%LcZl8oIg~KF&Ezn<9qP#Kc1@6+U5`}2ENiZzT2`lF3(Kk+t{nUx)tZK|tUrpD zl>%B;QfFC3LvLAi%BH%KXO@-8U|ECWnCicUpp9ky1M-<=mAcwmR&C(w0j{=H17TTz z94#vaw5+7gvPuKJWu>A;$zzjcrHZL#B}dmW_A^G>TUM26x3N}lS<`N0PP42s|JAax zBrU7-hFVr;^p;g}SC&=ssb!VqFw2?=a?2`e!Lo8D)-9{_v`q5EvPQO9*2=CTU?_I= z5t&_GXLc2zE2zcI-wT_G(2~Ee%~h4yRXziE4~d)q5hB>tzkoEx&HoHx-L~2gj~_Sx zJF3O({s&3PAN9C7WqI73+Ncd(VlM4p!SNQ8r8;v*@Q(G8v0d8JQGAHS-86De)=eW7C`!t_X>581j%$-~^Ub9FKjFx@`PIBGYuuay#?48cX=FJV zdE5OLKi0!E>N2AOW*T!1)igQ{ooQ@}o2!P{{TJ1mhKQU0gc@qxoC3zpNu6mF4Sn2P zr>tBAg0AG5X=E~(#-KQ+`n3?WiJM~|oXRvxUAbv&ikoW#vHLH|TLTd{|0x@&adQe7 zHz#$bQ5xvu=2R5B|KeCPjn(eIs3DD;Q)ykt*!>qJy=hdLb{lK;rZMeC<}}kN^IuIP zOVTt-Z>VWxM#RleLdbORABeGuuNWzs?bIICf zP#8BKF(?{0U)Z3iviZ>b3}f884-~cCf6<~|L)Tf{oHfL_c{&I@hsDjA3~_U5iY#pa zg8TAp5;u?RsqV?(UXO8eUS=k{r|3x;H;>Q26__Bv3QIuD2Tz}YTLeKJCt$;1$B%LI zEyfRcIDpn}8A-_>bswCv+y|$Yl@G2#a_U!c)Ccc?;}Hex>CA1~vS;8L5C!$wW)a15 zD2G1Yo}}cD+B0xuHXw@mgXAonBZ?M5@>ncE6dBu$d&(VxD5ju!-})m8Kv$uMc$P zr%C&G_Euc^YiKMrNKOG=c~Xa0ST4BovXFrRbXijY!z;OlidUS54zDx?$yLLZgO#Y( zG=wYvb84tTati3mlRCU28hTe=7euNnd4^Y*40t6dj)jDvXDe5J2KmgDm%4J(*c2q! z2Cg2gLV0T-T=`$Hff^*IfUZ2L!z`oGPZSJUM!m&^hVxipsRx zSgXe?X*V*b;T4&~YIIqWctv_c@d`6~S6*^guDs+^j3UVlqsaSgnIPg54U&smaOF7@ z>#n@?v`q5Em5=NyNM8B!Tj?1%E~}a^e}ee(vk<{PuLWuJ<<~%1x6xZ{i+4t~nBF%a zDfy%B%Tt#7^3*2v<#zp8haSZp67(p4)O>j| z8!YeqzB~)(mbZm3AB!cHH)ER-Ou0iW?@my{EH9J8eECpE?#tH%`ANs|C4}Qw7(ih`trZzg;{-h3h2v|I@`!{!IzhX1>300j0%`- z%r#Wo=rnY;vB{TL4W|dYp<2@rzWlGKq5AR^(3dB5wox?nzPwJ^R9EuMHZmD(V^ADZ zeHRGY`0~3WpV>yKE4PhJzPvVYcCZJ^TLaS`_UnGwGH{o%$9c15}< z^(dv(msf_AQ9CKg%ud3Wcln|)+R6vu6sa#S^|Toj`tlt856y2d#=TRa zsQU7wy3Txg))0O9bP#wB^W~WgzPvO=mNpQ<19>*_a)!viv6J+`uG5nl0Ry`JeduMVt!wqg>yvF!k3T55=4=) z&A6xBA&6o>C}D_#$zi^Hs3Z5~Yl8fw&Y-n%dU}UtaU@^w?J)$C@uM znzi@kIpgbiMeC=`V>Y~tM|J5$|^QA)Lj0TXy|i!1kB~38D23B^SQhah*DR0fmcX&c%@TZ1L=wq z$n&lFZki)?Uf>lgt9FgE=JIafzLTpce;BB_{I4+3=kf@c%R@7~Vg}}Oc@)*B8g%U8 zm6*$;VmX(G<97+~lQ~{-nO7U7=6I#7M$QbpVtv^03OT_mRvV62I5D5g+u7}0-p+H3 zV#x$U(uTK6knoAm`t2xxCf1b@E~^pV;ToT%KXoo6Fzc=JHpSNdEciA~WXl z(Uu!oe{Zg#V%sRd&9&w0g!gJ6-HGuc`J*IM_r5ly;YWWik1WmQDPdq`mUH=Q>a5)J zl51u4{yO^{tjoU^b@QEUv-hTLUcJO6TFo-AeEz?;?K(1CHF{l0!;juv9_9?syY^h3 z%(drTU@o7s6`r?ZhZ8KhQ#|jrq(pdLlGEn$T^aRUz9*UaLeR|DmFCKT>ih&(C6|9n9D;m-)I`u3%;)kbI%qidd}GYz zQL&uM!|`!EXy|3RZ*-Yg8>QyHv8+bU4Bu$|-+d!F@r_m+?i)E#bNTyg8aKJV(u2m2 zmdoez&agc0CoNg|NzLW6^O7+6$_MBYPpUbbWQC!)&X@09V9_ib+ zF_)iLbupKxgfy2g8-Z)YT%Ke%mp4;vXbTZ&S9{Fm6MNI}IC0O%xjeU-<>7<;qRi#r zpgnwdFsyJBiG&qyE)rPbh1xH8HSLW*UH@;_Ucf#b$8D)a9k4L^D?0p^Bb0+}}e6H>MUCRFV3*d=!gOt__#2$(=}8cgWQs9{1+P+xQ- zFyS`Rq7M`3j(wPb0)qzGA~1nr2~4;hbbM1CfeF7$FaZHD0h+-C@^vu5#*|=!k1!Mn zm{4ozFd@@$0hr(#ZkgO(#fFB03BOM;0Rb=pn!yCqFoy}=WlLS*1xz5>!Gun6b@kgy zun0`JgU$<>U}Y`hk$AnU8@PRPN97L#1rz>|U;+YQ0yKjOW?&8zP;}66oCOn5v4jb5 zd>juNdRYz=T;|nAsX0t2tC2GUCRqP>m_SZog4Kq@1Wpu85Wd@U^7l&Xt8sR;Tn-bQ zVR;-TSTZ32n@$TRWalMef(iZCz*{+sGzu_bPNO(XSYM;KvUStsuYuQhdFNGKzywN2 zFrjP&t`RVSWCs(>6dT%t3F$TPi5;(jKcBwK%RQ!e2fUsxTk`kg+({x~gu96ZMmR$_ z`4Pei%fbjhw`b_?B4LXWj?&Dzhzi_YLXFsaKpKAZJw3AI=_x@U9~7_j^mi2}_w?ji zS-peKj;O%u^|vh@uNSgIq5yN&F>l|t+h~`f6+5qV*yhcvpVnvPMqBmN`r#{h z7%34hmgF=S+m%tf*q)%i=tf-Zy`@Fp#nKP@E*1p_4YEaCEWH{Rdq3#-&N|{^|Cn4X z0$eOKbFt*>TwxmfSoC=f2T*3eySrr`oE)-~KRxxb1H4dr70C%ISzxL9cBVok%` z#d?=5b%hr$mSpE*JH^%2?<2t?F7^RBFI=pZwaDEZ7wZOYpFB|c!$7&%|4l9y0WKDr zxmYtWcd;lsXgJPtv8Y(OSU5h82MxU}cd;(>YNOQL#g^5`nc-rs|GSGNCoa}%!(A*V z%Ej87W$vr=pz)*Sau@3i%i}KAlF5s3TUS!4>q^)c#RNqj3n9lR935mTjTore%@4utf z^6&)COy7UMliB`IiQM+%mC}bTb(HO^A|pM)Alo0VY-YPahuQu}(XgG|vi$_ec%&n? zpB1*lmF0{xA1yM&b}QQomF*|$JhwfuSB8zaYuS!g%fm5ey6x%P z=nt1jw%jj>{G*Pt{ZS$#JxC$j=Y08{%=$L^qaou*=*YLx|BUIk*Y_m#Ti-^9 zWZy<7%am`UTS-<#{%!Qco&9ZeE}MNDeYd65r%#l~+jXpzJ~XJKYzMw z9}5{bI?}HCjr>Ty_x%Y^U)t|b|L!{%?zQio&BmulxXs)5SrU2sK1V5ix5tjp(@{0>d=d7H&2L|dQ2V|B zGJdv>wC`V|ec`HoAzAy9WlH;6NmfMOzKJ`peYtSfzPXJrl*ny-ky83XjU8X2qilSs z$VfZY=G#aSvhih*@yR-3qdw7McPO~B5t7+RmMJz`NmfK|W8%)Ukqc)w`aS9{)`wp% zk@w+ODy46>=qT%6Ei%%MJ6ZQ+HNW-Yrzk-meyV8nVREYvzXmdXg^u*$3t^u8E?o6t z$gUkXZ~HJ=RLIj+i2Cp|L}v71E87ZHAAY9J^FEx|E5m1ryH+1YtL5RdIkWD=ua(H# z_w`EYiwSmoqmHV9H;Ih2{cnEzQiR&~&5-fybfkR;(Y|oizL2ba$ugyVtt2ZVZ{Nh7 z*S=i1*S>eP_I-;)-o9^DYS6q*M_KoFky)t}}xNEg9S}hM> z%$arjzEdJ^-*+pe4-nY#y*jD}-X}8By5Riwr3kg}`yu0Z=}7zT7VQgH?F-4;mn>7- z*GjS?^7c*KdF{)Ed+mESYu{5P^7j3pQhI;3jMvE8x9rzCRQKckf1ovov6|E$PJ zYp$|=9`+!&Z2uf&{AnGreI;y%E88I%_8^OFUmJT^*;c4*PuL@|7sDQCm0^$FmNd|p zj#HhOfuXNK z8h-R6xyVu^mutH=WhD2@IxCOll51u4gcQjQRnJ<_n(Y$^Jm>qnF0yZX^=uDU`|YvL z+Dz8%@9OF)`z~k4vkb$pE0R1~)^|M5QB?WsGF&zKPmqQmy;q6CETYP$NB5PnBc#D$ zM@Mya-1ggJWL_+)Y^Ca@L3nz19mTXI7aN*Y~Uar1))%~zyEM3qTS ziz;_z)KTT0puXrvqRRg)EkaMlbN0CA({x|aE5yZ(sIpZCBCm=;gKUwgGGmjd@;9O5 zFX%{Ad6RA}vA+ueQDtZrRVH5-RknepsIm_;Y9OM@wT2#5=7i92fvB=;xMlJ!a=C_z zDsM(Z-`|CRs4_H*Dw~FRRN1?1sVlsQDwFJ@%AMls>fexHk*M;wbzVf3t*k`?m_(J` z!0nTNQT{McQRO``@L1d5g@C9sG>a;mfq7IJMfILp9iy+LZ+XQ2E>tX|%5d5~Lodst z$}aP2qtraATvj7zMpW7QzeknHNmSWt!=uWasHpM{1P>->D6KbB+tG4)RM{Dp$D_)Y zOo8Jzs+^sdgej_gLtUcW-(}@2(kMig=QN5(mDkrOu58^j)wjpyRb51tDIrCb%SPZD z5mhGHMU~AI8#sz8>yy|4>=OHY|MnQSnc~}Hn#C^N-LS%UBobEmu1H`7O$C><1#Iaw z{l7`^>FC?D_Ho&ra4se|Q)O#d|365>k3J?qmN3CjY<2hF#49nu_r%FD0l8LIkJh)f zyFK5g&AKqbA8JhCd%iof`p#eP_tk|DyX3arR*$?S_<^65%g-w9yaovWp{uKUzYl5n z(OY(gxnY1n<_!RZl&t^=6+3)&$&I?p0m8pai2w*BrvZenj2a;H1ocHX0ucUFT7;e% zK%j&60RjpP8f1$A1O_Ak;YZN%zv>7;(5}Q5ARquBKr?_qz78PRC=)>NF^2*H5NZt_ zAY>XY01#ZmEt4Os*w9b_;lc?ZAOIjhGk{S7=ft&yYs|^PToY?N{`k~T#4YnOEmjeW6SRMxm zmP{C+1qj)BNtggae`lAKvq+-=5au+B1BCT8iYr?;O|`RYUeyIapo9bv%0}QC0T4)b z0KrVLpviY*h@}z#~hF#O!G@#|$g_0EvIY9Bmvkw4WsTr8qfepv0BcTgq>DPiU_n zGu&I*i#Wm$Wx3Zy1{W?^afIK?l~sGBSNVLqMqf!VA)cW|#qt?yINoUo4ZSRf2`=+$qtqNGl-0v>+B&%$<}u3POC^b2 zKSTZ5@Rx^H{_^Xb2;Sat8EP4obMbiQ$ApB49w$kKe;pNm49az6bRadO{Cu9fn+sP+5C z8P7%8)r;q%tY|<$<}%O!@cM=~N5Me=pCXB$&;i$20oAlzcDp}WOQ!^|ztdVJb7 z+%j278fx~e=Lp*HIs#_T(9A8GhWYH-yKJc|yl{&oJGa;=uCBhD1dGg`H|e}^i&j?c z7H2&^?FMe2Y*zkg0?nScW1xrE5iom(W^U08%xBLiI%qid++u{+QL&so!x=Q*BJ{G{ zExOFBjZ$;BSXLuvhFhelcsDmWaf?+iBXEtFJ(KKa&t{4Z z?PB(v*yrzaQQTvSx%27562519PpR#D5H75g-dn4q_8?qDWTYp&wFhC|o^5h#55gA6 zcrP8q;4Vvvb%JzLlMh`OE=j}Zqw`|`58E?}O+joTRaAi9r+j~Nmh4!9U*;Z(=_aw0w z+k1jm#om*&XM3kavR!+&FRGN@S*xRLzqkl3u6CcZXPeC0QFRH(ct0K4QMD7(Z?AVe z>bG`OL9!iHWSO#~%1W{#@*P!)8#}7nJ-w4Bc6)lcY;Ql6x9cS(@^;-{DZRl_N7;61 zk&zxeSYuBSxz(IYJ|msak%w4de>>7yDx6w>gc2l!zYfZz1!B3|u&nv&bb!N^<# z{^@Zr%ijY2l&t{#6+5tZ$&I?p<6s9%i2(d0r^Ug#GU_;3Pf%ZUBXO|9q($hN#lh&K z0r;&ld_N5e3>suP;GY!-V@whUI|4dBP)Fim7u7B0-><1bsTa(NMH~#80e2@@3N(? z@B;9Y>;QkKxVrk`610H-ITz9uSMRg8!r!|;^U`{P!$#E!zfnwOawVM?fZxihvE{5d zm>an7rhQ zm;cf7mW@J|m_FEO@~9d`FnzG1eEPtNnm)Xa-8olKTCXj%qvi7HgEK6TPai5xS~aut zk_}1C*Y|ekSUHO{G1G@RP3+T$^)<08TQ{^!Idt>}_RAc(eW$lz%)HRGsJfUwP{OvI zC;YA2;KXp3-6-Z7F?}G(^kKij0lVB3yHRZ0Z}`S;caB+T>`lWriF?RW`^@L3B9?e? z6-)fFZZ97f)_;8!OT4-8!hz!dgJ`|>_CE1GrT;9($SrGm_-4DLo*~+8Nuk!Idl}w1 zQX+NCtBC~O$k*QV*)#R_t4i3#7;(?`w#Ce!w!(b<&F;2yamY1QtZp6Gf;9Z-;}B#C zhx|s@c5O-=a&?`R;}CMKtnQzGKhd;V7Y;SQKHa7P|!G>v~xeYS7$NN5yzB*VVLQ2H``E z9jLyxm->%h-zH%TDbqJPoX=eb`RGf!pRWwH_&)pfpC+6OLGP%N*w%i+`}R63hoIzIS-q3q0M>0AH*MAhK_8;*#TGCRg>`04!CvIeHpW$Q+ZY#_7sHyCzr~sy5#!*F15bq7XDh}!JWyS7;^%OAy@yQ4-q$!x zvx9Z&XsE;LWfiCyUY?(a=n%za5j47XAX%$wkDz(^$QD7ejCzpl-J#>#>Ijn6wzhW3 z905ocnju;8bx796r;x0VRul*%TWjb@Hq&qcB_sM+8++|*El$tM@ zm(|FbfjzAcd(4ZRcm=Bs$DW)h?D=Uqpvf^x4;nvOF2|nEusn`EEt%kD3z4()k}yH! z&*%~*_Ox;qX%w*MoJMi%xxPkmW$UK-8@2K1bSdiCb6(X2_N0V_JJt!k(WE?5UedvETe=!U60z|6PSW?=EZr_I#XZjXggvo*os= zu_rf~<>BY;l7>D1Td}PB83wtxM8Y8V7ZC>0<(Iyz!&n$(PhC?l#gm}LA1}oRTfA$~ z+%Myw+VNu)%-U;b_sqE<m}DptD>9hrj=_MxMbYw2;Yl~uHH z{aTKHJM00oVjd*r zRP_&rH2mmoScf?S#N->+trolGyB5Tdxdt)Q7wRm33u02X0>o78z!N1mI%5uE9w;RO z#E_h}P}h}FFVyt}^+h+bQ1=hgq7O6Zs(qM&0)qxw4l`yg)G@GGsCy`Md>F_tAIExYrP4XfaG6&drRFfB ztVYfZm|^|jVFo#Y8CDw(GdMBdux@7qFW9hd=Q*^nWI_)HEo{SjB}lO1ZYm^vfi|qu z6Z;$1t){J$7aP_SJ2tGh-|yBvVd(+#b=pBw_}fFn-+sIDx9nGczkKGW^`FIb7*)l7 z^;^jAx?f$DNNPV)B>d`CuaPnAPQyYGH3%=aIyk~9cT zgf#reYMAlUW2M*FEC)5Egl%4$M-$9myc`_kIgLukNsHa_yisC*q2Wp z8v!00nt5#UbspOWvOKmAYZM5NU2EtbJJWChkL?<6ojgv(hKBOk3YD}T8v!00nt5!~ zF!$I#AWB`~g~uk@dF)Pc4W!3Nu!zS#N#}*fwz3xW*lysylgBH67$}c@X!6(y@YvAI zW1E4w$3{`TSy#td9vc-)j}6D~65c0skL@zAHcHJsc3F*_86MmEuzPHB;y$c4++%ZM z?y>Fc)??dw?y)U7&0|-B+GCqq^4RpmzQ?wjwoYDn?8I&#F7z zeD)RPn$Y$M?W5qtd7T<0_Kg|c>GgzR_=|-wX%8(eOluj#N!{zJM8j_?*(Zp z`wUsAs(U7+;YZKy!kpoD^SvKwDhs!r%96QuyVLi66jRxht#G>)J3L^?o#J+%DkZ}0 zlAIQg@5-p-@jXF((T&98pCv84|C`&TANJg?pTp$`4e6fSHO&@xyL9co+x7C1H#N(d}9Y0Y=;_=#&(#GQv5RZpuZkK$5Cs(rRiH%RWT_3F|5N@~D(A{pPVdi#c z?JRK(w@jX=Vnaj4;}1tee?uGs;_=YT?V5&pJl+RHsVls2yCgfe+bOPr^lS;_cE6}Q z>QVFJ@z2+J;dZU8+U?HTS>gt6pS(c%!$8I3uYiHaT09;B@px$FcFn*%9*?4fhGWm| zMm!!B%XmB-ze{+Z%-ycbyxJ%=ce`aZa%Q+)>%;DL$%$96+HkkaiHgU6QNh^BbCe!5 zezaV;-06p%`;ZQ2auab@eKIYMnb z`mz-Dc>KJoi+DUGqA-t zk`|ADtuV?141>H-B6Wcmi3A48pLsb&7$%ld(ZUWBg;^URB>IQy9wQ-*pwulEDILi(tNUkPdW z(c60pa|ZrcJCsi58hAAe{86z33Y6R__~WHgBJc;vY196$jC$JN6Vw;o$h7}e z(jxTCR_y7ceT0Alg9cfS5N3ta8Iw%RUke?dtRoZiD<*`1fQdOYLkQ&SCgwKKgb;k# zp+F#nT0=(&nT8ocm=#KQ4Yy8Sr(#1xP0R&NT7-ari8(Yw2&Q2^G50Q8>IyFq0?7^` zbc(C1zghzMnlG${5MHnI0wGvgwKJL(N_PYIoxDN$!$3{UubdD90w(6r3?Z0-`NSMW z^*IS0dk7&y>8Myv%;ESr*7qos&JlvkyxJ%=M+jv#a%La|>;H}r$O%HQ+Hi!xi9!hf zB=<0RjnevZg&i%IBLrty9!Ch4>?4Hiyd+Er;h%MhXth8HR?Z@g0z#P6D2@=;*C?)R z-8Aa`hmO7>Mg1w2c~ut(ffCYFDrF;ZjX($_yQfsl6dT%lO63f$W(Xm%Hx0ijuD0+k z^qdN7_Rp)<5dJLReW3XJ%h%Uy_V*X>gfdRSZDx7+Ex#zwshlGD0}Ug*Q6gc4w}=Er z$e&YrkFGOl-Yj7or^w$o-}%5+m_Mgt!ny17Z&R@v?r(=Q{ODr`WC=U?`{vQ6#15y3 zlVb;Rt*pL5QH665lsLT(O8EQcx%vfmiQpYlPBr>YNW+gFR)9GJE36%>Aajis7Kl}( zYz0=R*x|NI?i8%>Rw)r!f#kGUMOQ{0tLO>pi*6)V@h)l6#|rexK2|`1L4z#E3bUdK zj7_2m?}d)vq$AOUt0b&|fM^0V!wTfY!Mkj!E4;u8Bs;9oDXy;mZV48_3h&o>ffcN*+AYnB zCb)syC#NcZ7^rB%)e=@fKr{iGVFfcVk0zk#pyAlV3K2~}#WI=z$H(!Yp_k=Y!DU`; zl$v9OvKl!vu!8k}#|q>GD_CtfR^UWoh1y-dQ+>sBUeyIwpoA1nC>w!m1Xdu~MH9>v z8`_E{+)mZvSRt|7ub3vR@WnaLmVgyrT49A{`FgOzL83KQc!+q7{UGD_CtfR^Y^T<>Avx z4;nvOF2@Sausn_xEScayixsl-k}zR~Sa~2C6mbPBXOTt$E6iyW#|rCf6j!!xnrh`? zUeyIwpoD}K%0}QCffY!0SiwxOpM~4%-J^#oYC$Q%~zF{X`yAjcM_n+Yz0oJ z*x|BE?i8Hx6)6!of#kIHhpvoz{h=qQFS?QShkuq9eVjm_?BfI!&==y+JA3!Vtn~-R zCF>7oK*wLuk@W}NP1~*f2v~oBW;lU--TH$KEa3znW+)Iiq1MoGLZ)Gc6K1VHxQ1IN z-&C=oq1GRcLc`nH0zLxPAD|gdFb(td2k)|_uJ8gUknC_mr?|TMHzW{FSaU1?w{%|M z1S_j{Nwd};+`xS&-&X!GQ0ouZ#=un`P;3ye{s7Hzf*F{vKcJ|-VW(pcC&c;#DwgXH zaC{sO8hTld6I|xiMyWYYD65e(11DJjcbq^@aDvr_;{;C3HwN0--~+bu+j))+EScQD zVFTOBUkMT}xSMTnFtxNXke=Az7-%(ZoxIo>nAq*cz;<8YXJK!_|__?uP@JyAYk?{W@ z4L=TRAD!!7Q;)2kZlicR-S++brqX6>?^SoK-_tp{W2Kyx)q7|LeGY>4kC{FJN1qF< zWBm^)r#k*Vq~S+zVNsfOloo z6Y!p(zUW3K;QuKte4yCILb_+DeRj8>-_POl`ihs1y^V#Y*}>}6i#_O1kMFx}FCSU% zwr4E`aNA&d|0C%5J32DGzYad*=K|M*1_9H1Xy&%b*G=zjAj@t0uttG!+qH)7wlfVg zw>@hqz%|sD?x`c=TZ@ z>KhB^Rb5Q)DIrbo%SPZDF})|*P4CSV8`=UZAK_}YZ6L8X4L>UGA?>>@XFYfLw0MT$ zDw>Nk@76v8p~|JDR|#9N4!}Ds>ve!l!Y4cRpREIMkI}1*xT3#nDD4^esYJpszYv+Z z4)Ajc`xquV{Koei{#wOqtp7Kp;YT;W?|=!i8knF>3rrk_{8F48hLB5NqPyrhf+6>= z-)-sZ09^e73qyV*PFjSX+5STMWFIJ?fW9q<-r4+q7EoYp0u=rT9sf*6fWq|?P(T1s zfM!5}d>v4*fhC~e!wdxiDAXD{P{=e~04TVITPFXbVnag#g&QQGfB>KX&47Ywm;(jx zvZb!@0w|E|fI_FZy87=WSOh5iug(jgU}Y`hlUN6E1Gi89r2Ju^fWi$EP(T1sfM!6! z49tN7it5{PI?e(Ls8|98I6jW`Z8@cLpx`pEHcHKbLRpQR89>4MzXJtw0u-z^94K&N zyJz4JN)H-8S}q3)&agZV6fBvrfX(#<6teS@Fad@Bo&hUokwyV1%xM${3hQeWSGI1N zYR|yDstce%2?;2ajleYmD3I)cf|+7NyVx_3*ysD60d6zJo`Ll4g0mzNR@fyH>i~JY zLm%OjppO&u(Xfo4$2#EC2ce@&YJ8q!NO7Uf>bCld9Hik#7whPj43O1J1}N^3VrA81 z9j4M|0jBQV1%K5!Imn=#mDO(mGB&=5aLRO$fj$>lkg-hV>hoogh9A9H2h15DW9>x* zGS?tufklLrtpFJnJN$jgodPnJq(p!WlG7Fux-#lTgr1wC())ED`43;QX&}#f={bGqiE~s6iK)@0O zG=nhY>y{{NAPd6yuttG^FtvsbVKNOf2s3Mm!ZqAF*_1TY5`{csyF`J2B?@Q;VNAn( ziNXg&sVlsIFeEz&(!UptlC@7TB2|R_nqvi{LutjqPPhL`Vs{K zmMEYZgfRp2B?=TBG#q;nCYC5rv0S2n<97+~lR1QOnO7U7<`AZ=M$QZfV|~~m3^{Qh zRvQjsI5A(Mu(N?KEK%5b4qGglkV#sis00bJ_!5Pwr6me_Vtd?TufWy;(He7@Hv5fRIK{^c1XjI zzJo?qJ7~0Q9W>hL<9!*&qX1jQ$sIK1tgJptXP*NH{nzOZ8hr`}eff*GN)_x2(#sF_ zmCmaA9gv0}y~Tf+8}{2|-hkgu*$Tg1vBQOy+$ny0o0JH@O>&yw?#ihBc27`WbR&Ly zr?dz?v)}+-weML`V9+32#IrK6@vIkxjxVeuo>lj{*0UnOvqCe^O1{ps+6a_q_3?-T z;aO`9-LqyIF5p>R!>yBxso2m^o>e#C*0UnOvqCe^Y8vLA)w^t|E4=WmBs;w*&x!!g3e7yL8JK%k6dg1iXL(jsEIlh6 zAIF1+UY2`SmwB~OYVKLfYUIrDtk(bCvyv0fYPI2>l@oK%YG=2e)y{LzYRPGywGz~x z)zp$_r6=}1tJSo1^1`zw_IdLjKSovISNZPzaklni7!9|&pq(T|%WOL24m?mXJK4{e{*zqB~H$0XNE`Q7>T@1LLX-Fdru@!feV znuiKAkJ)_=s;i>&`jPz0$!1mN-#{9E^g`w^XL!Z6SMJGNd&LD-?o+nHD^~1qP$hSY zSGNsF3+B z(a_h{5fCzmW?s=W%tPkhWlLS*g;ylmdBsj~b@hWKSR`bAsLl(oXl2!2an{!?_U%;ESr)~8FA&b^|`yxJ%= z_ljjTa%Ol%>;LW*$%$9A+HkMPi3*w9Bl$z6_3=YHS}wd}%dkA|AuU;XNQKNjV}CjU!%CPb=Pu9Ky|8-5ZdW{yf0-$3>&J@s zNd0GP>)d0C=kdV^{yhHS5~&AVQDi1YI6}hn03#f!Vl~#U0%`cs#|X%3jDR*JM!1qV zIYuDY%IbH{*%rSU7{RW70mKMbmCdTmt3eum^e_U<4Pyi{ZvZ2tYz0QB*x{~A?i7r0 zWhoIDf#fud(3MeRgr1&@n=$;Q|=JHQX{eO2vkT!U(rc7y$to0h(b1 z(=f*f-epT&;RQw@*QwLp{z#E42)p?-!TF?adcK2 zjuAMqT~@!Q()y0C9W9q*1ZP+t#|W0}V}$IyBup5gzpQTMEYc`oggK4k7-4;l;>y-d zQ!T5{tGd7ll#nn&*$7-CFapUABbX^Rw2Ni+#Exb4^9dtxk15vFe;|zE7~#4S2_xJ< zBrw7m!YhvuR#_H4`MI#kpgCH?79$*Wi8dBL8162BIk}O98nHKqH2mm$dSuDdQ-YUS zdiv|@tlZO+Yi0EgIy*M=uU=mtwb^^Kkto2Nbxhi~?Kaw_uLJG8(qWr7uYOu@5gu)o zeuuAE`q151KPQ$Qw(U0DCdqIg9rhlaupKLIqKnCjn?f3X^js{=4ZBz}Z@|T-Y=w)h z*x~I;?i3e$Ln#q1mgF=S+m%tf*q)%i=tf-Z&7?)&#nKP@E*1p_4YEaCEWH{RdrRo} zdOG4_ZTwxmfSoC=f2T*3eySrr`oE)-~KRxs{3y4dr5Qn_Mgc zTr4zmv8G|}V!g|jy21+=OR{sZo#N{1HV(VgWq4c2fqvdiJ>kP}|F4mICi?%!0vh$K~o{P0|7HJe*?3_k%7rVYj zab@eKsa)*5stXrO3CYEljlea+#ggn?teIj%yKu3I-R@j#ee80~!;cfq=i$Scho2#u z?{U9Q%){>`dZgy*?cR6Z-~VRuPSt-l59cOR_}J5R-h(Vw|92Akw}fx2ls*ZnqrN44 zJCV_o?OVd%*4ujQTf+aM1m6<=j%a*KnB4l7@a-Yv+vv!*gm0&Dbmp;x2CmlFAiH+x z%fzRDU($|u(NQ&USCP?EtOgz{FMQ#B2E)gR?zPW_h9`+e1yICb zWpX#j_>Ma6bD_cT_Ef;_^^HsY-fJ+1?Aq}sU45`a{hTZ+dnh$%?rFz+ z=_niTEi!uQS~gOIY`hO-e0LqO@eW}lT-gZ8Y$VGR8?7WOBDXPd=h?`GGaGkXq7OgV z+VQ>;c^|&NQu^GRjM>@~@aAL0ve=P1=eHg8lhd<#=e?|q{ z|G{iOP9nGc!Aj|~Wjf0Chlq@xZnpoIvYG8aRRY_8CK|SrTed$GGJcSb*nX$59jj+Y@_b_-k?3vK_6KhyTr)$@V*&?IVfY z_J=7oXjXNU?I(zgo?*66l+A2^j1t)XSkbVZ+_L@Qkn!<4V*8!LcDS+~vTMgpTHDE@ zLQYa4vi8bP**@ovO=jKA9tRnZb>wb#S4_YCpn-#k!8x= z%u2E%^1E5$#@(#FUr(Oc-LJW9b}!p~=}WThDC^TFNhI6uG-#fn)S!8y9iOD5EPS%a z=-FoB_jR+kp8cOn(6fIa8atu=C#uqE4cgoxGr8>&Smx+v? zx0a0*Asb%~8NWzJY`jO<2v;^jG8@S<#YQX1ipXtD+<7)~;mk(w!|s<~A(8jtS1F~p zr|T%|UL!JkzF9ZVFOyq+__dJnD|Ms~-!u9!T=ii{=9kH$KD@SHwz92I_2J}~6MHeg zj8-%J^6MmW+uxwnpn0Q?vi(gWqZh0>e#tG{-wYYQUPo-dSJ)0$wnMVTWG279qu>BWW(|w5fu6IhLc(BwWM47(rNntz2>AV z!}qEVMzfxaHsRcNslQ)kD?oHAq~S+DqKhm=bbn$I-S>!BMs(jRP9D)ESM?nh)8?%8 zy!Y%8`&aKr^*zp=S^eEydiSs{eAp$o?Y4U4C5b)r(@q<0K@`ZQj<1ea zoqdi%%^%R!RlOgCH2mm=nqd~9X47L&wW@t>{s`%N*wLYJ$8A3XN9M&s%~q6hnl_1 zmb$`=P&3Ic)Z8hquKr;O+EDXzcq`fJefHL>&hF2=v=FR~!4rO?elz*F&Wlj9m9Co-$ z_&Q*qDD!WnX;N43x7FEV|4!^Pmk&BqSA)~`BKn;NpMS3tTA5cQ*YV)9K722k*_?vD zZA93MtAr^c{71`MHVRoHaBZW>1J@Km;M$7vz%?f-aQ$1&ekUJMTJH$9qvi6zwKFV_ z2d*nkS~autk_}1C-{}(32jbPMR?Z?#OyGJ>6MNu#eNF7j)(w4s^_bD`rKrD~WnR@q z;F=Or;JR!Ct`UK2l3n21OtE38!1W)vn!TGPu{RC>C~o&|meV3`eL0QQJZ}91-CaJe z`P^%&{bM%~Rya`n<3#JY^}EG8P5)Wknmg9=@PD|X$3G6zyIUS=SmP5Csb79dB(TO8 zq{D-B-T&496;w_PlZ|7I&#G+QAwCCb_|eB2$P(80u-w015G-DaH9jLwjy1?teN5JF z@#itt$SUN##u1;Fg{rzQKpKAZo`Z(DVH`o`4d95Bt-ui#J6w9njk?Qm#OYEZa0JO| zIHD_~#t}V1ebJ5Jh%ZVD?|$|iH2pBtKD&Dk+Rx$gdNr|*z2~4!vx9Ztp8n3a4vJj! zX&T0Q%Q|J~Ti-26b(G@eBU=QeFqA|?U?P|DYIUZ4~!YY`U)N^t|XPrk1FVW3dTu?eLh0Hr`Plwt&-R6%_=X)E`OLLUsGOtLklcN-~IeGZj{iiIWBuwt#QA*h;WC@gl8nIQI z@xMoKl=5dO>L_Ji)dfnSgoIMcM&KHOQb=|v#Z0jqg;2`bT+L8QVs9G$ zMOq=U+(QX{Od|SopzVR=Rh94bv>0b7N%&|*) zKRntvc3Fwn*nU%-9J`RKdO!U7vCC)bIElYMj;m)OlFh4YhEL8%Nb?;jryBiNNW+ib zBjPY;K$`s3E>>L@8iCt}M#x-4n(420vHWdlBxNfgO~np$QF5n1nr}&ofHWi>((HBU zU4%yVmyeeZHp@*zIR%FAy4um#?5=`G`0i@3eYNveNl3 zJePU3QEI*mudGJS447bp%Yzx@1SVK*I85Ng{1I_G8+gFWSL{5829`|T-v*bxAHEVK z^l~>961R9gB2G{2KO$~5ZJk^W^B84thnd*z%U90j_ro)+de4X-Z+`JVB$D1g5Q+JF z{~7WBl(6-U`7`3@&^P{A#j1P%1k&)M^NroRRgtB6y+0$4Hs!qjhvMYEkz6a~Gve#_ zjWeGAva1)*e_7EimSirodq%vgqVsyD|6j6MmHAUh!;jvI0n8b0F@HwfH14e!khyk? z)1MKy{Hq!;-o9FQMb_>&RUEA>5OHF7T@Nvx>!B9GbaB@^y1@8&h(NKEhBS++wYv zyTwey%q`A(M%*>rGWnH?4GlFHe<&LIGvWxCi$gQFXd32oaqqIFuJFPwlI+}Kr?|TM z&n1Xx@ln^GzGCnf`NPStbzZndE30;kvz`%m1Gi89TlvF4&BaF;s0q2600DDxXyz8p zz;c+k+xa<}L*uQp1}-C|jdoEdJ>`oFtHa^e=PHry?8 zVjJWCh0=Q2wjC{(&z_xOdE7->vT~7nMm#$&36q=b$M~(BMH+?K^PEQU+4K4u#g(m_ zri$^;tGbvyQ$m_OmyN(RV)jh3n?0K;HnfWve_~fL{?lXbd`LBSK9`;m=N?nU_)pgy z`C*0;ej}0ZrTCpvdPA^|+Dq{Vk-fb z$X<%$HH_Gs4p-nFvTKKC>b|#?EZR$8 z_IIMy@^FPS)Ba9jU)?+ZMclQ2HF5BA|=6!lum-cqu9Sxg3bX2>ph>TvcW}hav z+I16Tyqk`+>j}}WaMiAmtWT3=p+0S8TcJgtPVB|{G+GsX`np=PJHh(&W{HIPFDw$6 z|37q3dA!!^wkrO{+TftsOTrfOr}rVR3_qp1nYnMsgmd=|ZBeoE-CH3IKl+#-S;GAO zs$;Y%G5_A;}zMffROf$%GKfbEhS zEtIe2T|`O*!Y4Tm;df=!2)`$&FS-$gzg=4RV6e43`eCSjcDI)2=Wuzw8cxUFTApck zFx_gX!|G+Vv1NF9ejcJj6qkk7=-M%Vu&PGnEk0kbt= zju0?^fM)Xt@^$kE8=vxlK3cIN<`1=oK7a5UFbx-&Ke&clCi|(_&`|S-N1&naI6}bu z0h-MpOv8Ns-~*!66<*9ANOtpwPH_#SeI;n;5A)XYE~@il{$OP-0##Yda|5?eE~flp zpym&c#6aJ1gn;=2G@Cz|f%*IaMfDa%9iy+zUCTq=LBp|J%X5C}rTJQ(%e*4FPQI3B zHYX(CuH~gHbJp_8Mj=bgMr=g*Y=rWejo5X3Ho}SRqp~}c)=M7kXt{hg;tb2_(y4$nCndyu@xFmF?E@-W&6gi&pcItHxU1Z>zPumk3uJs5!+)MeDV^fw0Ne@_SI+ zvx;YBf2(|sUoI|@@XMt{ro=4I(wg6(xuk?Ge#v8&c1NAHo@c_j_~p_nR`-s}KpKAZ z@e8tqUp!`sHYI-9Uz{AjkZWc2E$0ls%!paq)r**AXXyVaqPeVWR%IRtY537YG%z=e zXvn+)M3b@=h^Ar(xG1?(5X}KnA`lJ9X^5sPqee76L4DDUAezfbi$3O{JN7XL3Je-# zi(n3hC79!2==c&kf;s*%VGaaf4rqos$k$;G8&kp@KEhBSFh{MSV~$M21u%zexMea_ zv7w|*-}?{fjLNan4?o%UHxw)SOjxiUgrhou(B3$NMH^( zaQoyCMupP6tj{Jf4zk{h`$q~S*&ej-co)5B+`z-9#-wzaQSKT2oi@RMBC zR(R9qto4M?zBfI5)|oX8Y<3lrh0i+PxfwpYo-9<=9Sv#t(F2<>3$ST=^ulK)w+)|> zc`>kQ`P=YW%2t5QiXFJGT4 z_Ss$d%+KNSdUulx5TdWp4x>UqeTr>=+#7 z%kKz)vd|35lCOiZHa-PqeY9dlK-pSDhq7J+rr`om)-~KRxv`234FzQ80f!ilHRsJwg zQ1&qxc&shIBLK=mGbn2Y=1>+z_3}y`qw87t%yy;4@;fS)%kOa7K0}|(m)~9H)kdlL z@_Sj0oEhNL`mhJQ$cb05+Hmm6i2|SdXc2C5L!}3eA1#-IPiI&j2cMQq__D>w*?CEr zz~^>dB3dmruUk2bGz#EzPNO*ZTwkNOvUSsFQSs2xzEadTug|Nx0H2hQz-QSATqD3I z$qsy)DK@kPK6h|6+q|CGn}$2ZJ*10weKz7<`s_!scl~C<0lcIAcNO-$yRZS+lRfNp zyzBGgeM|ot_T(nBJlxMNsrRGpw)9%bA7L2eW)ca5+(INUh~CSwbfhrIr}Te{J<286V3$|w^rF2)PDzQ_|XRz$P%zPz2R8A1PabKPq-Wfs#7~fBdbK2>e0P@khCDy(>d*ve>uY6Vw-t3?hr~ zTmO4$5qf3_fj-(t2q-XUkmU$r*1mPdB>UFy03F|4NA|5hE+GU2>|2Ls2!VXvzI7XD zLI^(WP#_ROt)U}?Ov4Nz%-Xl^8g8B3QN@Oa+PAKECbkFx0sGdW8A31(^L^{yWlLS* z1wtU%A%sqGb@kgx&<4BaA%r{Wyg&$6R_%;t?OS&P_nq8X`NKf%TYr2)2ng7>4$TmP z8JO=|M^U|MQ^y`ch<)p*SngYgQp*M2rlz#qtqNBl-0yUnKg)N65%!;g z5$-SE2_;70HnTk3-!BSAxVq$zG>mW;iG&gEE+UMe%P(C<*ZhqBZ>wwS9jFqtF^cqj z+n_lnJ7-2(0nY4~y2af9I=s(pJq&59Bxb3BordqYdd6YWRN(XZwB zH&pK-PL43R#>(n1_RGGZx_*SQb7!^l$Df2lpDb$8ZV0mS!Bd&6+wyNhYVN#76!(#G zs^j}Y8h)%^d5f&rSCu>3p@TCwj3_8^1BfDJD-cD+4(DESryz=ZN{K)eB&Q*Yu8bN{ z^aS-qH-aecCoO!`*oGjwXQ+L47t!!@xcs0Y-HT|LW{XEO=<$8L;^iY-1g~&^0Ixg% zI=-up;FTxhEd4n<1mG2DhF8ef;T0Rmx^MchMuEU9wT6yYG7T5NE3V@6xTqyzXbApYd&Xptj-I(Vr4Dj8i{DQ zf%{I5Q~oeectx+1ZlAM50A7J+c*P9N@d}C#8jiE@3M!U(1&-ekyiewM#bsV?l$zs} zvKl!v@QU?e$1CK-=~`_#Ug5<2IXgQWoWgTbLpQM zR>gC6Jb&)~`9Tutj{Fdj@XuN`S~^Pp`HTA3`=TZ2`{#4)hmTjW>e>&3H2mo1_1*L5 z$Z9`~Hl^2ns5rUTC0F(Q`MKtGxq9YVFIZl8Rm!PGPk=Q1=skZ9bHiSj%p35!DO=%n zD|R@*k~_ugj-*6*U6RwhZdXR_b$f#Pq8stL50@69XEu+gPxk#H3Je-#i}*#xC4TXd z(D8$H#4kQ2`9%cyMQG+1$=CTs8(8v-KFm-c{9>)4`^8Md1^l9GxOMW6DmFBfUwmrv ziwN+G(9AEIhPhw#E?epfFZ?3O&M$U~tE)dkf<^q|qjX;QMJsDjzvu?;J9)J7hk^2o zPfLCg0e%sh`9(7@_lqbxXgJRDi>O%oML0f=2MxU}_lqv`YNOQLFP7EFnc)|$|GQr# zCw|dt!~G&B=6=!6ZvCR2=YG+W)BIv3sQsd;CBH~d?E6KlY3t;LUrg-UFMf7L%=>5Z zS-SMpTET+$xkx~~I zSl{?~DW@8J0;J(bFUAdXhHuOtLN_SUt-QBu>}0Ne5Sof zCSMt=;9ropiWs+@x=5oCJ@9tWay{SRvDJ0j%H}ZkfDP#fFB$3eQeh0RdP6nqdXgFvkksWlLS* z1y&&0VTDd{b@dlXun1Oona&HWU}Y`hmWVIAf!il9SNqW!s}G5hWqOw4L|x=0a=X|(5A!+uMsE53glW@z3w@SD?DKON;g-(z+#0rNIBK$ z8zBupdRPJGhOq*fH-HsVwgM|u>~Py9cM4W`t&|9?Kyn&Z=*p1F~ zD`XljfE8TBEt9vZ*w9c|;du!wAOI^sGpt}5=2*eIY^f`}zzQTgtk5a0uKs2T7QqT{ z(|LgvtgJ=c5?H|v+&+1`@`r)K3eQhi0RdP6nqdVqFvkigI%qh~!V0KZVg)!pj`cA* zrE{#{GOspD&9OpRjhq=+!TP^r1#*HFtTr4gaH6ono%AH#7I6hDXOTt$E6iyW#|rCf6j!!xnjh+QyraADf`=ow@9sYVR9#>NN=R6tYy_?mSb=1R70eVH+QJHVd-1}9mZULu48h#ws+dGG>Ub9C_#}Dn^ zIrM8ezIX1u;^c^ea#mK)1W~LE_f&{22JuG?MXPOc}2}7vL;??;Ha52tYHuLcVT~fDL5f6(80p5O}55(D6#9VTM;`?e%vJ zw@yB)Vnaji5qKdQ-p-Z@5U@u8n&B1GFyABK1ESOwUf>my9bV}a*FgHP1oC`q?w$LX z&I`O^W!0{6)?R-%aNo(tl|KyB9)XiF(BDyyfIR}x46m4h`5plj)#v+k?BSKz>yL`% z9sxLhm+(HB;}w^AwNYx0SITPS%)l$whaInw6Q^sn;dq4;^F0D~HaLa7b9SC%6iX%; zlJ?G3f`m_e@0_WnJp%N^{vH9VY3t<09)ZNJ_XwOzd*>Kdy*&btwz>Ri63IV*N@V6- z{*w~+eRQ<(#`m$Gu42`_KMQI2(VxpBtLO4)Q_kf-El%!v$+fb&Y3n(P`+sx#T%N06 zU_I~Wq?~H>^N@xgy}3Nh8J>6TJpyE|J?{d01X8xb^H%I|f+cr~=lzV72+vD$+FZUX zqn^w61ocHXGME2?v;tDVTJ2zBiF#@Hi(isf7$j*nw~j!o&@H@eKLjZ$;pSXLuvhHtd~ z@4k_o_(rP@_l=yWx%@pejhlQ)X?^3)j+V>k^3Je4?k6o-`AO{&$j(c`!$fRbNPEoQJ>4ttGbxWQ$m`{myN(RVlGdzo6DOiHnfEZ z?#-dxH9+ z8=1?0S6cX}vAI0mGt@r2o6Gw-TwdSy(y=#}H_aBG%hTigc*V;{mgALKb9wF$%;moa z9siS#%;jH-v-G(<0_O7246l%{o6Flk7GCjTjRJvJY7HH)WEy68W!7BYHPrX!RBULd zx%|t}(C6|9n9D;mykZ*Wb9o;SrLOP-uaNBUN~gF6(!WWt$XxzRofmk;%Bo%Cthu}! zsPD}we;BB_{L3*gzBeZUb9qk4@QN9j&*f26-<#91hgaI~%}G|y*3I9ItRX9ezd`HrC)!;8KO~ZW{((r$<)?gaPQunl=kIQ|*xttH z@;_Fw>fS$rH2mn#<&mYie0*NVa{;6Yft0JTsz$brtv9T;dCo@_`i}n#p(V?N`%uTIc*x> zl~GUQdxH9+8=1!cOj?AV*)*Q+*msL4pzqD0_X5*+h9%SZUqZ*<*O6)bE4U~7G#&xd zcxdJp$=6NeZA{56`UpdTaErBu?iMo*Gq*Tv8t)qFdvhu_G}JWym1r2>o0EWPJSSvs z(KO7b@!n-iUEzgWB-y#ePH}bhpG&aFH2&8*FWjP)RlCJm(|9*f-DY6N?f2#+E2r@&?c-SAn^QV>i!SqOqtx6jmet6a;TEm` zyIUkDZqaJP-6AJy8gH+&`GwN@Y@8h}mrvuJVR_s|TC#GHd~eP&R>I^a`>(UHQx|Cz zrtxzc#i#M>YZOOOS9LLsr-U?(FB^et#5A5{H;p$_Y-kG%q}SObcD&A} z{Z{+wvCsdIYM=kP^}RXiR=msR2YS{|HwN85ej|}E!XHEeBb*^!9w9ySMYyG(+xu*O zCt-^bj=F@lzrR;+b~|w}++FJ=lmC%WBldqG4L|yx9$E7AlrU&0v-I@87bo}hrdyOKM_#r{!B zgo`CP&BbU| zYX;^n7DWdQ$5}2G6-yTj$H%cgAE}(Vi*=b-8>QwhwyZ|Z3>Rzt-(4&@aj{k#?qWHy z-68)Mi3g1zEtk7kXILJ0v6k$+*zCL{OfI&+L*B|+q)~9Oa~j26?D`tTm93km+95x$ z>cYiRLUOTXBXEsyu_QYeYo^%HmWxe0aDguQ4AxQ1|e6`tN4_a(5l|PX9eb zMlaXP%XW?q&}-)GyQY^`g72DYQ(XI9Q*!H_{wt92vW~pd|8*Kie9r)`0%(w3JG6rD z-!&zR3OP`P=z9j26PfW{Q!CpF)jR$FM(6o*Lt?KC4-$8+@0z03^6+5JOy6`Jo9&w< za@+S*N}u=BQMO-LWb_KNUG?v_UtS4pKSVUX=}K5RETUpTx5prR<;!?+pnPW-1fv?86F|-TDGIr@=)&wblZ1dI#um{xY>RYiDdg7 z^;JKm^jSeW?xUk>V7tiZl~x0K{B+L??_+N?-E%K}lvVEyZ7YBx^kvt5A>%DN@@3aI zPyx5sXX^A@Uv`CLUv?$SlrOtlNmfMuW!J=wFT3icOIu~Y(#p~kp1!o-q563>zi{zw z*Yw@m9lDxqyv?B5Pbqy2Pe)mIF_F=$*0PSwvhL!L@lGAF?u}s`Tv-RntRu@5>#QUz zBDXGaXMeYr%NDk!aeE1gyzgF0DSeztN7;6O$mrE;j$3l8?_L@*zNC)y-8V(wg{!^` z$;K^N78x_YD?u%l3mH zY~i(NVS^Dl&Sl+5Ti{Y4_`=D8W7JsiJYuBDZWm3^E?-i0y9)+u_P~$gUkXZ|_-T zQ6W!v+n*saHL58>qxwk5_zF5Qs!xeg4OgQYl8tJzOc~Wyk`cpLQ&*H+p zaeY^7->XRE?Rzz)2F=xVly%n-8NJ@DdycBc+V{Ci(7t*JeA~X{R{LHPGQO&gwC`J^ zec`HoA-i_ms%>AgsE`+^5cO>Z;b*n4m2HKpef7EbXy3$M8R|pmYql?1Ef4i+*M9q6 zOCoRIYb&J>+t~5CI;sY)Co+1&TJ1{_YTu(Fecu-C3s>z6$=a7JQ`*-`vLf>K zP273y%Y}RG>zL#E5_$XHP^m$4BOPVkjYURpH0$PJ4sxq~Zvq+LKu6m5?a{t))xMAn zbC5;tyEf*qvaL|HZ^9gjy%^>|s|<7Ow#2>5@7p(($Zfy5Qu>gAjA8Mtwf4t z{hdg}vhTXL*#|y8o4E05++22$*;oNUG{JqN7ge>V(mZu6HuKI*(Q?ig~^@y*$b09o@E$*T|qSaV8b~I zsNG%`s-o@yY536#sKG1(YNki`BC7Ta>Ls^*Jr$W33#eKC_VrXLTM@S`^n>)ycqtJ9HImZ;YF!z1K&>aJFS?O{+8w1u=$Wlq(fJ~vW|e`++eEK(NACp! zY78v`YIlK-Z>=K%wRh^y5NlQl2&h4`fExL_fSQdL1=M`>Py-QAt2Ok18YhH?3k1|$ z!!47$lFKzzKLQ><2`QjfHUig(fEvjzpk}7nz)?W$s$9*so+kFD;nl=Fq>ZONHR5T%s^V$ykgw%^ zm3OY*P4#K{U*c&$60PHDhslRuOaECsjeE@U@akOAV@mk>$C#hLyF~Ky_Y^s={QP}X zw#M{*Aq_wJejZuv=kFz6?&mpYWwp^Oqq?_K+AVlpe*Ts98>gPBm8=-Lv-YOgRoK3B zUi>~OgycZ#3Cx0DD!PjZ@{@5-qCd{0nc zbR&NL0n(!H=jnWXKaT?XEC_lp;O7}y`1#|Y<9q0cpMP)i^9b~-`NKf@`S&M3j{rXp&HTI>nEQDY9W)$g`FT_< z{X85W$AgAmmiu{^d9_h$?&r&DezaWf=bd4B z+|OGwx$@S}XXhnh^7H+LGb?A2M#0a|X%zSK>uVHOwr-kg;cQ;jg`cN{AWQz=_phQ&xvS-2;^c^cTq~<*oHIl)WB;mM zz1Y8MweWwA5gs9%Rhf^3H2mmc1ehDf2xQ&>Mo8HTj8L(|U6Bs4uz^jPQ@rqK^^ij(v=P0(y@Ig!s0Rb2RnqdSpFvkceI%qh~ z!U(8XVgxuojt33BEXN2g^J=5i93zy~$eDo=tp7VkASW2XYQr%CC$<>j(Mk^*KUyxw z2+puPju9-GU_grzvh$K~9!9Wo7HJeP!kk8NjIh2&ab@eKsW8I4stb%j2?-;VjleYm zBarMcf|+7NyTAyEU15aNBNlKT?O){{lVODArPCBgc&x<&9wU*~J8r43N+_k3j*~=2 zZ`RCr=ja*=9@r}0HI-l$?^>dswbB9Ewd16A6^|?` zA0@W^GHf!uMDpzE*p(5sc&v9J$h;L#!u7{yFVOu!1d zGJcwlSpSi*99-2pC=M{Som(~ zWX0PKRIF_;;pRc}TnSrL`=Nwtjn9o0`RK-bEbXx}{Hv;KH0u#B6V6=c1LP4%BXlB}+wVuVXTj?96C+w}ujQAe8 zc8z<`tTSuc;#gN9SM0uYm&28g>dYCzl*)EC_dAbyFo@a|_%Q8N%i z?X$b5sQnx+KWIqzo}xC*4yIcTby&UZ-b=?1FVD|Ibco`zr8l~Ez-_B)UwZTMku3tZ z8TG*JmqW+T(Gj@)QLvsrE`|WO4b9*-`8v35<5O_kM=J^h+^#irxSeUZ0Ni#Bw@hB4 zVnaj0?T?|MFTEiEZbLJ;Z5rlq+XqCcE4+Z)Bs;j>DXxL^QV9gNzbOBC)V!~szf$J~ z+_th7L3Y4xH*ovpRmvX*3T}TK1CJH*88irh+t3Vdn}IppM$tjTG5Shx=?xW2xDChe z65c0sxa~5pHcHLmc3F*_8F1VBu)}R~;uWkm9By-ByY%)lr3Z~4EtkV>XILJG+m=j- zx`o@>c}bYyb}YToYVihFD`$~L0dCJ}6o=dEYZO;(;|7_sxL*@VTz3ev=4q)x=ch%b4-GvQUdwZN{z4rEb@xG=1 zZ0(JkOtJR%TFHfjbpv^|M8Y7i6$uQYt#M0g%B4@~{}kI}W4F4E1B*ARYz^u+K^lJa zfd#SzEDpH{z~Xh{m9e+ii<1Kja;>Z$t+UTpVBxAAc0i~I9@)NW+os`nl{kF!w%xXE zvh6l;N2nI7o8%gFB%y{ z7Jnn_Dbk{k5a^?Qgn)H=-8y<_0l8W4Sz%1_o|U&l$FI?m_pF?j5CQ_;vjWW!0{Oc4 ztk^))0QX^s0)Y@}4ILq58fFM#)_Yc5!>yBdsMyd@?^*doLI?Qw5p{z#E41{2V%Mk)OK?qhG zju1Fe2;l|_OHAIT^q}#h<#L4J49nvP!IB9CvVaL z2=^E7gc2ign^_*-)Gx|=;rJem$0^<|kubvhL;@r9zcc$@3EMcuLz%1FGv%2NY=vLz zf*2v38-lP9lPed&RS1U;^}oz;w#D^{VX4K?~|rID(OlpDF&AASw75AAh1HMp<{(i z!wf6TdijiNxMgyhiVY1FP54a03J8cMKr^gh8s^ai@3M9i=yZh_Sb=1R6*|S$)jul1 zB3R)QIxnz-l~uc?SudY)1Gi5;sr+G}q6u0;X`=}Uh$cWYtY8M_(F7D7G#sO^^r8u< zSVj}z_&6Rk^s*c)xXi1KQgf_ORwHKyR4v(B*1*;9m3Y^$R6F#Q&pz)*Sa;)GC z%i~zVk_is9SRp$v2@_W6Z{)Rd7HJf)!kk8NtgyaDab@eKsiFzC3gy<_`H+|L_u;|^r0&wf(c#pp(m&>8W}_uk3M`wTKK53)epL7sC{;~ z`r+qr`9VXvxB6k4Ex!6ekMH9ZFCSTsS7yaFxIYlv&@@2K^3ysJ+fe+oeTOUpVjIv5 zuaK{cZP-8-2Jm5x0)ba*4IQs!8fJK9R&2vH+&cNXiVY1F+xQ$B-p&>W5D?pdW_ZOk z%wroqAWB`~1zsW9;gwEt4WzG1AiT2X_h9}>=LKG|vTD~jE4JYV?mPKsN z`a5J15Zi!ec*P9NV;d+sXgK!pO2jr$v5alN@wTpzoifeK)=a z@EsMauKll&h9BKLp2_2is>WosA4Z$f>wa6D-0M=}%Ib-%0km&!Ki9l2SHHk|-S0{{ z)#$%L8h)&9)u-t4JqIv1>~+b!0k4~~6<)VuhXX9RQ@rlKNQv;eB&T`Zu8i92_5}4s zH{x}_CoMwHY#vXa?E6I&(02>aJDbPP@{5d1{NkC=@fkYe7r&7FA_Dv(H1mt(>-?e( zEcrzrW+?Fg*?SN0DvIv$e|GlX-A$nv10;}y0HF$kw1grx^d4$xp+g{qP(lDfkS1M- zh=4SaE=@#5L`90CfQ2HcpopL-qI41dXU;jhH}^u6NZ$ATKL6*(^Kj>W_Dnf*rk$Og zz2SAyS3_DC(`on+>mq5GbL_W}Eo%ttBHU@%>!K2~I~jn_r> z)maxE#i6Tz4T6VR7tcUEUKcU1hg}z`f_cZDh4frOSQkI?tcyyZ)DNW2 zs7zI#8Lf*-MelV{U7>L-Q&lfZzb=xD%%*Zpzb<;4QN`qS5&J)_iz=mB7ttEDE~<#> z*F}tNuZtLu)IoKZo^>Bn*jgQJqK6A%4=P$2WRmn;(hCPAcA%AJOsSQ4KL`5WAMKhS6{9>pyRhtHizw>qBgidy;uAtUi}{jq|?xfQ9t}D8UP>`ud;^awiYp z4f6X0zJ>mq4f0<=3m!1BlD@FocbwZJ|$4w?$hx8G?%ciSR=_`RxqV~nr>mm?{rQll>h44KH zeb4e);Gg7&|LJ@fHOJ`cFs}VO8tVPpN$A5|1rhXs8xXJ$bN}Cmxeh|xhe`i_E#5T$ z`}_ObkS&b$KUI*bz`4J791|t;I41OdtI}yGO9iP4?t4V9F8*r|L?!+g9*8HImj~i=nVkXes}Jx% zZh;c)fvB$!@<5zCd_9o+1ipp-8xQ0zXu*1>yR}!{@qQmcDFDACuk=oLYoC#ipoXRL z5wt)E$6NzaKEkISA3+I}kD$VIK7vZ;_y{i0nKFg}6~<+G1~c|FW> zqz?R31@nw`c`67#!V!;;pajZCP+>YB0V|l^M^K8&RP~vWkDyfa_7T(-8pkqK^|JIn z0?Ej1D%bQrg0~q}O!g75|C5iPQYs$-twBD5ifA9_6Ie8TVk+_x=mMr89|6DK?<1s( z=Mj2*g!_;4VLlJjD9T6pn?@lYA#;sF%KA1<`r~}?_hJ6dbnGLj96UaPcO$4W*hf%b z9UlR!f@?>cTcuUHcWmjmRG&rvC;&uM_iXS@re=pvsCy0whOEcB$H4JN ze8adAd{J*0H-?bkFjlFd?m1O3CJ;VV-9O{HtE*6V72M4?*?z-VC4o$uLMHHraWe=q zc*7X;#!R8^%^@E7n4ZgKWDB_ZPrn1Lw9+G6s+gYN?WcCn1tO|@9{2{oH4mRq_k0ix z+3=6;u2MtY^Q&M?ZunGn|D5Ztu0q{akgnZTl80({%o{WHYIo1&hiiAGRl0Uh{~Oqk zfe7jjzkyur_*n=(!2-b$4B3bl_?zGDS6RSsB!{SAOb~pk-$?#K8KA99RafCR zl2wrIHxPwU?=Ij{tQmfuE7^2{kMU!I0OmhG*fX2uJUC@I{T@?;+&TtMY&zTuKFF ziovJq!N<4bJ>i%09Vxw zAO1eTv%+tdXYN|C*qOVOUV7w3imT3Gt9hH|uF@c)@mm(Y$<%W23AKM5f+3r+_J22b zsnk&W@+ufp20m5ok8|zSRj9oR(#>5e$wSRum^WtXHFtR~Kiu4+98`^jKP+Pm$qQ`(KTWRqG<K^&027lYkAKc#i@|q04jjhr)bJFIu9vC0{)p0BPx|EU#?>LiWRB>2)7snpEKG^QFNRTHz5p6g}s+H$w~bO_Z_BUxL{2a zp>VBT8{zsx3iYQ`iZ*Q5s2+rQfji{WMA15fhV%qh|DiGQ#es7JR zL+~>Uub+-lab_p=Z{sh5{11&VME4k#=ehd*+Zf^x{65lebbNME-EU7yZ8JmR+2ZV?f`zmvcC zzL%(}RE~bTy&=kU=-;NWD3nqS z;&h5l>TigJ0ZNB?+12MJutsiCKSt%28uL>ZxDM@Wh&EmNcQ=H)^9jhIV9efDhWG$K zw?J;W#i?fdJLMLk_<6jk`u-b!8gRv51au4NkXxMV`b+!V;#gO8<%O=QE}P-g5YPEl z4bCnObzRxOUkvM^>b1Xvs+V7_*E$y#GA;+$VOg{OZNkMTNokO_5!U*6Csm6Qv31%P z7R6($4Js_!j8@+d4O8{%hSr{fwcFW1^|2;+<#s3ay%Am?jGw>Zm8vMMgjdG-DVv;u zev)5Uer1~);_c4LG80gG3hHZ!0UcED8tA9K7wB9O>axdA)#x028lo-6xtOA^-)*Am z(kzFHStMGu^6rF=3DE1{(_bteq2fn0&5>dVZG@8Mz|Zv<=cC3d=Bv;v{6+1CDxa~K zs*Rtr(lxM>8k4^kRG&2W}#ZG^A5B0%;k`rXhX6G#{xN(+fyjnU-OBdx2^| zF0W#FT7N~k#YU7>M_F#M4P`x1mptNKlx;&<9&r?9KcXzJIE6L(cxdB3HAG%<5h=B^ zqQc@HQmOWeii!YD)!jWrQ5jJLDRHo(ilRKyQj}E}wULGoQ?h8$5UF^gq8g$JQq69P zYKyi=B|A3m>^TQk&INNmCB`wNJ07#b!jE0AYHJO zthJbdbONcZcpm9w3nhyci;$LMx=vyh(xF;P)>*7YnujICiOopoFlJA&3#nLF6|;}n zk5mOUOAyDAEUfJ?aUN*~rb`w-YZJhNr;@gfE~bqV*HQM;@NJ`O!0%1n(Z)mXY1m)U zXi-%vTVEVRR3B;l5JeM2EK(fORMA_iUbg}AtRZHI!6-WrtLQw_$>xeKiwP)8>AY?9 z8S#ghjuhKc$*zgnNXLgNx+NAOUBGmIiRDP$Td8!Kwhn1joFZL&4OTTZR%SyVbZJ{r zm-YP=xiz&zl2bf`GPm{}%2uJw(7-_kS$mWj+7*;dMVYBx#}eX)&(2d&nA&ZOxg28_ z&`Rkv##9LfwP>Bj*lZY81+`8{6CkFd{z$P*2}se9r;-gpTE?=;NXM8KAbr5}B2qP` zmyp7kUPao<1UoNKqvJqIvn{A+NPk6zw4Es1i?Tx69+YV)3)Vi=RlDcvtYQXh2Qg-K zj2WSQj4^wnU5aU6p)4F_#kAj1_7uvBYd2B04Q0i(yD0k+WhFGrrTWsbA$g&C2IqFH`Vh+)^BQ3=e zhHLL54IidtqqL7*s>R-`uV}P(6lIf>6pdkO(N59R+DViZPgFEXJC9Veo1&@OZ%8FO z=7o7;x^^Au9V~CAb`MC+6DsCx&2Zz$L7K1SMS8!rlBH>dkczZYv`8z4^dZ!!hFGCh zL7Eq<2eqY0Z=qcdX{(V|qU;lG9mPZ|9o9A@-9Y+GdlP9M)NhXV zrS?A32iTfFX}=`sl6QI0PNy#t|=9isN_R{cV zn0p?R-3^)t6$Qy9D7!d_XdTk{A&QE~w~^wIip!6%ybX|N4N*#dj$)j7!NlYi3 zE7^1MJCvn#Rj(zkGD zlp==cF-R}KjaG^np*KcK&ZlUM-V`YTbD5|&NBSMho2Iu!3P!su(pw|lM!T%n+af)U zcG;!JB7KXw9MU@=ok6>Nt#?BD4ej!)-UTTJEpbopiZlTA%<1ZmM0N>x^+XCrtt+~E zA@x8j)pPYh`aPSfLt|Gzq=l$;E7t&|aj0hp*C3>Is99InV5HyBO1)f(NJTK00j?yZ z(^y`jD;eo)w9*LI2qd!7Sl1||>Tt#&MND*!Mhb$T6iN}(Tw{>xq0L@&jYF!5Ew;`z z9%&@j;ceG5NdDN;dt8%{-osq>xh5k~|2*WHibVbMYu9un>Yu;5W*|}jyz82UR1f=S z4)+`+HTR~7Q1?8fF4ztg-1Ct(V*jk;PD4t=c4*^Xh(tZImwOQs^~eG4#Yog66WvRZ zs7H=)FGJdbrH^s1K1`}wntL_UP_*@I_Zp;IXzMihIwY$5V)q6ls{2Ow zCZr;0&)x3LNKx1a54*P_X;}Ih_jaTnSoh!DJCLGL7isK7qWa}A-a?}K6)<)oZN+vd zV(dohgng-)u?J}v_N6k$`$)?%&nJw%NKLRWRWtUPdRR_jz)oZhQOh`hGWa8tK&^~Z zNZ?umwKh&8twCyQe1oKXwi=?H@h#HxFmu%q?Ts@?{b1zO5FL!ONRMHwTlG@g&A-WqEkOEQG!}uAgDpF755>hXuc;gqOaHL+wuSlbjdK*`e z)QMs6uZ`c4P9gO*{y-Xuwe4qIMWWUmU|dI{)=V{SB2iDCVcbTdp1jz&gG4j!M&mBh zo7kGW4PmL-8~)4<^y|ZhM0yr`@)^U06ovilieVrf!7(OH3+V#RyLn81q;lYIrichL z5Gfz_!6(h^NY}BSH867`ox^_C-pq|ey{Dg<7m0e$U^71wjgDk92#H3=XtN*^&DZ12 zV5F1Sd#0F$k#^y%IMWP8T910pH^Y&3qh>Fe5lByBA6#x0N6L>g(Hb)nX%zOsO=c;i zOE|_}H_ITE!=C)MSq|wL%;i0^Jkmy-KlhtYAW<8gFe@Q_f$1)ql}Uz{xMfyFipKfO z->Qy8mdI&EBRzw8=C^7hZAE(qTeXqq;TQ|I>L4x08MC5Q59vLc=dA`v4YBSKBhl*A!)l5|t5cHI94QXoCMG2`LJD!EnE1q=l$ws^17C zTGb}_jY5jWUNF^fG?IpWX_ns@r0$r@0>5!c`LQ(@`;AA+j=HSydj^U6(i*=>NYu8Q z{3avaM!UT0Hx-G-`w_qCNPDo2&iKthqISRHHw)~mA(1B#5%@b2c><*auUZ~YphDnvl#wS;H_*>dtz+Z~)C=@SB2S<}U?38C z0u2MRA(1E0C@?z`c>;|Cb0Co?&@?a?5_tm619KyhC(tr5FA{kItpoETktfh5umBQy z0&N2eB9SN1F0c?1c>=M4!ARr@v=1zTM4mv0z)&Re1Ud$WA~NeY*irEo*_B$N**JsQJu)ta&Z#;b z!+w=#VYsI1JPhq}GYa#Tru_eWoWjB7D7?nyeqVujAD3IW43!_m@w6w?u$;4;KBN5X zbasBe@t!Y5XA)b3;Ci6PxLCgi1-(gN*{%bU)TUU$1 z(QJn@eTnOLpfKnu3YQh7a2D5RTpQwB%oR9&XbHMLgyVOvLmbtd!e80`g<2CIXEvDI zv3{#rUyHd5^JL~PnFF}ITbxgE&gUcMKe>PWI+V(@xPCwNA)Z~A!dq^?Q3Bx5te= zpV{NW9yj*7VXqGx%d7G=F`q+w9<$Ti>ybUqHJ-}X zef>n+j`lq3>wo5`MClKdr}6Rz2+Md^*t}+$l*RC=T!(^UEj&T1HfjC@9wgjF`taevGb>K4EF`>ub&!0d&#`|NnBoWBV`vSMP8B-F;0iakR}o z7|*#xVuOz%G{oaEM=;FM<#P<962GM|{(B6cZ2KdIa}$1sP!r<@LV3cUN=955kcAnmF}qJhvD3S>=-UD5QO1#*@GcWuSW!O6qjFpbS30R*CQIs zdw4x!u-t5TA8ZI)pGVchxBMr9GO`1;M^=}g`S$R!Lt;y>_WAGGqwRmBJtBg7KU%*? zO!^<$W8{Cx9#bFD9t-|Q_Mmy=!{%z<$-40x5tP|^V-eQ>#z6J_2lU|il*Wmg2Unon zGw;6U72kWlQ}N&SiGRo|zCAy9@;~Ym-&>#i3R1S@& zjLW(859Juoc&{fJl|%hB<8r*)#qL+0_`dBDgylvhMo<_Zi6O-|#J^uZ%RoMvSwCsM z9>(j|5@-F&8hsvq{qoi$DzQ?Q+T~yCkwxwD@a0#fdMDP)()vdP#bmNywDc;!`snV+ zkKRA~Wm1o1EY}a8gQ$5rYx-qG(4O-W z9{;YNWW64l?I)YCJ#GwC=Qz}QPV>8G9oT_#&w6gJHx%D@9`>a3U8f(M&Ym|jn=a${ zANbUV<|R-3kA3QM!YjV_yrI^mb3XB}dBwNKmnVO1qWAjjtFxHg<45th z@stzdQ;v5%?0)5m|M&H{KfZ50%3^s@@zpS-d>>`quL1dFX5FWGH7c=w7V9wy+Veqr zG(!FEzkeq^Yh;?PoZ8IQtn{(@!71U1&eU(IbocMMTiQ+s| z%#PQ!I8WRdsLrn{|A*!=&wRHP<(~O;k5_!}c}C4wpZLVL{T|BSw!0^PUq8uPpZnwc z>SOOqWR!nK`x4&qqj+3ote3qn;hoMCKcjsK@Ay&N-#qDj>+fw}yMK7%``Y(gw0BhE zB?{xOU`X*F#Xq?Q`DAAOx$9Ma_0c&ddDi7e(IW`*$&4OkkJ-+?$p6Y7v<^CYBo;$^ zL}gL?Jp8=tqsM=}eBb-uQdw$;h@i~g|587-$5mFfM?_F&`|0CohZ_Uc`vPj-rSa<- z=T%YenRgp_#rGaxYJ9ZuiSM1i-48R)-=3#QA3J^&_ghao-}&mn=`xOQ-``O=_WT}| zNd3Z-&iDS#yZ(0jdE%@3R~AbO^oB6MxFQE&IK&u+;T$<0!_v7ZwDg(Cr8sPp<3;2| zldhN5UP0b$Y{js({w{`V%|jUO)`-KIKQ&L{^?sc0OH5~o3!Uue73w@Y{AL&X<@W~t z0PziBhf(n)zl7)8R6LqLTl@d?zV^3(y zFR^~Mo_0Jtzm%@@eAd$suTpu5+Oybi;|&a{9Uf(#4}g3gG|%V7>-XP>7Vs*+`sh+w zq({X}>Ou3X{oExgi|ld#{GO2=s6Dc}{D`2;wug@$5^H<4&!hH_hqp(4EH~@z5&LNU zA~F7dWDoCl+2Hs^Su<`QzFqqLhuS6O5!+?*|EOJ_`w!V;@gv$}?f=Lgo4m@sQIOWn zN1Zn!g5J)gJ!oCA{fn%c&m)2|yROhYwv^91*mkh>`S;J8Gdqv%#df(dP`$^Z{8U=^ zNguUde}Zz4e{jkxzW2JU;$QHIZ~Kpwzddhz^7r*Oz4f_2zOOzH&OeIRr;N+F?NyKa z%P}V_dwA-dQ8_g4XI##M)7kTM#_0-R`F6Y9uV3+p)Q{%BjLWI|59QQ<$Z}|2$+(>M zUgda?f7Nfg`;_C|&+PH)$=|o1dAFzcxKjE1wkP>j&izUJU@V{V|6lmIRQ~j?Sv4!`<# zf$F_Wb>E%d9;!a?quevkf8iD1*5A|qU;D)W896HPCWY~TVfg6vlv5sT?~LvfY5e-0 zSBT0YeSF*fiJ*tmBPuZf>Y>^{YwYsydgP>X6GO7J{D`3NOtwpDukx#pjz)g;{!u@Z zdXT?q&u3ZH9uYyA^*5_8^2^Nq z#eOe6PNaN+Om=w`Jx*p)5ASutw#%dH@$l;dwTIo#Syg^SP)6;Mk^k@=+W*Et^}9BP z@a`9?T`!~DGaqVGRXjVscl)XM{wVjvx5p3V|IhP*w?4LgJmbb!A6i$U5`(bZsQ3^J zAGIAb_K!2VZzer#egAiQ*zq z>VMlFG=JIiZPtyK%+6mK-ItL){(JXjgK^%xF;M;fo?5qPeetYABT?@0E1va=?>+yk zb!47TeA^G9{5|bY^R=g(jQoG^bQ#C@u7_QYC%$hz?DaaM{C(GJ`}tx<@iTh9=p8?b z=K+sizV)`BFM6l*#LwvYqIdi#9$%hxzU6qgqdgux@qOFT+g=ZG--G=iDt-%wl<%Y5 zXY7D{GUKPPf0||G|GRw`+pbw>hs^5nF53UbK=u2Z>E8=GfY&|a+HPOpc)sJnJDy!X zPrvbvzY5EVN<2nk{3#6o`~BgJSNY!0wH~EkUV(fw(=W*$&UxbhnLWsFb@WKQ>t&xu zZJ&qtPki*qB6~c1`M%E;^l7*bW|1BlpU2P0f2DqEkE^IG(<8I})SfqTuwOvq*E7z2 z=MM|*c4HvL_a0wreB?v9XTI^y-|mMQ=WqKFl)oK6iuRo@k{XFqi{ndH=5)h_8k6#9Pj;w}Z>0A_AdIRKA9Ja~P2078B>t(g> z$eWD>3|s4?FA2hK0b7p3@57D)jvDCRI5MHT{wh?~qIVOxO1 zM283!KTYI`ISd>jCNVD#J^@@@oMtvh{s>%BSj8xQ!SI{FrA2qM~SPegVx-0e2Bgm>+9C0czewtY+TX^DM~Y#3tkk z)@MC`M1F(imr&kSyvuScUdg+P11z5#|0{4eafIc|P%;&*6CBA>wD`$&h|1aFPfqt?Z|G3~;h&>F{*mkz$R*3xP)q zR~Z$5f;iShgK(VaSyu5`zh9HfBM(5f=bLe23bH-lJS}D;+w;xSVj;=3J0WW!|MB7` zb8O+gz!OFHaw`AxT9v}5fTxH9%ryTzCn6sw`JRwJKt4-MWsVEYK2wOf;sW!@A{Bt= zix{OQ$8N|Es~kdk-3526U&$jh8G3?K-^?*lu#XbpNM#p z((evy0DM4OdLJj}YL`cG5;3J|8^V+af;LpVjW+P=5@Nuz| zd3yLF;FBU}6-xi(4!#v(fwse{3B8?aM~_mQ;SJCqOFMk3@Q1)<9Uh7EL3xMwgq#C;MTg@;wb?LO9H#nIbGTk; zagawlO#QQ#!_+_PI86Psfy2~48#x>j_7vpT%;7yD-GN&=92YtkxQ)a0LRSFCI=m|6 z9pH`*lfH2dZ!dBT%D^ME z6U^I3H3Cl2T-7OkM0h*kRIMYjt^YV}1hTFF)7m&>TmPrEsU!#gShe?f?E*8k_e3ow zO670+$CI@+%+%h~G%K3q)ZR0+e$3R~v$Z44)ZWi)k?r<9teqe^w67XJN3^PSRsQES8b6skc!W{W5@FlG(bHVV1 zz`ts9n3p7N0luQ`V!jpj7VsZh-iDMuFyPE+m4B&0m|aFY{3OV; z%f-Z2a)k2dgXAja2@yFVevsVAJf^;q7m%+rKUZJL3&`EfgPv0If^wf7|0yLeC=WAN ztF7dP7nr|qrR2f#3iHYm>V6?a-eTTXLftQfNZA;oiOE)} zNF^^U{h4b7ev-K();~97eYi~J_+;M_aw0R?w}hO*O!keG^O?!Mk#Y$$*|(&8#g32mEh#rK zQ~gWH9n4h!Qu1A9vTtd*pPB4iS{@;0{maM`4i5wU%gFLg$iAfild>u^>HnmBikbAU zEE_SC{*`5G<}F24`&N;inBOj{+P8{~XTH#1*}tkB$oyx2W&f%&nYrdr)xOo_80Jnx zRr^+x&oYyJs>_+oW6(a;Wg2t+c$I&YT*}-bUgaMpUuE9gN6Dk*Ys{bZQSxZHlQ|IY zcWcN!%mwg%w}w1O%=W7(k2*Xb($|#Po09!%4qcQ(i25==bElzifV{pe!c6)%kR_N& z{|2%=GnL;^R%NF08_K7cseUoC5i`{*NJ6W8W?9om>&P?`*l~tI@9kt>*^P#!1O zF~^`hPHscC?cG)WKyogxtNg`bH9oq^JDh$;V>N!dNmp~S_nyW|-c4pB=JefVK8JHZ z5B{cng5$5~rp8CStj@f-n;IYSvMzI_o=VFXEN`rq2`l*GL3l%j@SNjDRU~0*Z%TV z=CdP;Lj4BF*O-49aU1Tm2gsewR~nQA`9Qgc`ECOZ?xY9GgUtI<9tZg#d6fBZN+sm4 zh*|#x`JKZ`zXW;7VGHyhEU!DP#!sTW>#&NSD6_SI0M@tBtyO)8%6!bvv{v$=vM{o3 zza&|eh{4F0!2;{3Ys^pr+&hjFy(eb)o#xvIepBb;HiU z<7Iv3pBwf;ZqED;$|uNJ=7T7oAiFW|Xsqn>jO@$2r*Tdw_ZgXJ%Zn@dL^;Zq7gzF$ zasqQ_?5~sLH0IveUnj|V%&*r|>7SL0n0MF93F)7eD~Y+iC(HE?tNDAfe2e4nXsqV< zDe`^hJ&l!oiu@Saw%1ho1M+#lG0jzZQ{^wn6Rerdb3%Dj<#pyEeZxRLP2Ocr>6--h znkLOw5DonGMDL zm@7{(@4)t+C(khN!SwjBG*^YS(^x95B*TPu4i{ndIqU*;mVb~IM& z@d8$=gPrfWqGm}5LOrB#V ze{z}pg_-87P>*ZWz+uj@GdXlrg8{{^J-+vzV3*>Lae1Er1-ee|wZkS#rO!r@J$okB5f3j0HW2XC)oidi0 z)}J?JS7us&-jscbx&Cj-Ar5~6^?ysQ;`r1ad*lXYYL7kgb!O84J^2nZ>HnVG$GpAP zNyzVg`6=^(THhicXD0i6AirfM`+OiTFq8g!YkruA{Z+>UJLcR=oN(kuVtfZXlyd8pq3 z`8}t3&-d`V*SDDFvpU6ARWWP_OJC^E0_WM+3Vi_KA-COIs$(uKV^O)PW7L2@*H#B!SNvfLC)ww>FW+o0=^)ZF_%pk zgWR?!$*&fh0(?>4WPY}88t_lDZ9K`N6P5t~Ea&&Jc?0mT@)hQ}op&I=!@Q)k(&w@~ z!rUlfH^_gJ(S0fX@y?$B{~=p4pYN>v)oZdB^GC(L0Qn8MhWV{xUjyHi-!NZ^JqLVC z!XsVyH(BWIe*yke#`IS_L5ym79r%vi$(*;vU%-FKYy(){+qFQ5yRrgvlU})i@5y$| zJ$e@g7WyRS$9t6lmil(&$s&KN>cB4j0`rj;4S)?jc%aIEvN+nSHL#`6XKq)b8?c|A zeGtjt?A0GQKo4b(E1C!#sGndiTqgxMo4z4|;zuKA*B1;{JV7)={d4GVGUrGAbLw9+ zS3&)A>48Hi{-5zm|2%p$@?;@U|9pBP^XsVpWBMxQHK>09Jvfodk3#(m>S@e#QU73l z4fB#hO5YH@-%yI*1G%sslSKT-Q%YV$uP}@_Uwc*mP`xE{iT2}x!}Mh428q*v!}T-F z!&|)sTuje9oYK!|wF!#jW@^BC0GHKAIr5Xh<@7_$U0a<6eq4_nMd|m&{sdfJKg2w%9U{{qsTCd97sjI4Qw7!m* z=jUjBE6ZuUiPqm@ru8OT|A6^-+#jf+f6ROj_Xld|Uoh8?&ky#ksh?)<5MK!S2j;zf zl)RSy3-f1vl)RRHotgIYYU_8IX+N*FZjK>)-02kt@t@LjFz4tUi5$edCB8gx9X*u! zV0;zilEhr!x_SkcS1Vcz!%Y57J-snA`8W0SHq4|?eZ4a?=~G|t z#Z3A%&<8P-J`MEY#H>$4eJsn#{tfkKnaTbQ^;yix5lY_}J&k!ngwi)gf0>!~=Njp+ zGSmKCBYiV7wO?a>Co{EQWBom5x*u+$A7rNc;U@ZL%w(^o`d7?kucrF<%+!9(^q-lj z{hH}lnQ1?|xqgS4_M@BY?y=Oqw13z_&&Evqhb{E{#B8sYdSRA--B9)CmU?mKpBt+2 z+fsj=`5lzE(yK5ZM0qQ{HZ$E%w$@{q>3*`c-in#*(MIpcO!jD__atV0+Uf&XPR|S4 z>PgJ>yr8X~%1r)PJAEQE`D5+$8N{4ltUjORUpK4|?H#KxX8yTh6XaKz-$8kMeIxTh zl(*M+Fz+a?`b!6WH}jt2s=sv5_cLF@`{j=MVdmR-zuZwjLCpGe($BD*`e!Ho0yFi` zPWlz*m%>$fo%LJHE5cQIopm{m+P5q1&+7in{b_$z&%;dij?)VfRj_UW$2GLwC}>)n{?{=J9ZmznP0d+3S8tWQsU z6w7z_Q1e?)eLVAt9%_E;sZV33@e{AlWv1~HuP-9z{Cept?D+V6t(U%zneKmj>D#>G z_txJ=R?mZ5LwUXR6Ugd$a7W-i`Wa;PJXp#5=$A+i&x5-G_tl#|t=dOD4;}+NK;OVj z&wCT}!0{xn7rGqeiTWVs;KI9rhv{E1-!1Yb@JL<#X12<2RNcuhaK3UujkWc%%Ls^H;&qz?=1! zQz-pc2~B{v>tmQd59D`&bC0H4+8FdHe41E14(F;5S# z0eoK13%g>f{@;yK_PMCnX6_QM?DMm}0NL*Uzv^3&?f!pRe+${}|Ce=j3RCsZDIuyq z|E5RGB#sMJ{pSyT67y+14}M)g$4vd}mR@g`ik~K0HfRO<-O&@7CkA&0zN;T#Hb)Kw z)?8Pa3x=lv>#nA=DSh>rnZSl?6!V(k1;Cc;2(yu*(g(QiFi*$y*<7vWsPuMybGim2 z+x5-m8i8!rHo?|GVFiGTxaxyf3ijml*Ws>a%yfP*+!f1A=Ld_rx+2@>uZz0+vYgHnM!1Hs zoX%fIxJI#@&KDMQjb}NXzb@vQ#&SAuSll(2<#hhKxN8y1>HJ{{*9vAje^|n`o|(=c zM!L2!)A_?lm)hl5^`rBLC0%=&>HJ|y*C)(${;-tmOJ+KMSjwe#kzpUnZ$(^5uvcl< zdE^P!wz$WUFSESlfXcvSTsK%=eLys_c%ITX8BiCvtjj{4V8st;gq(}zWjs&jYYRdAkp<|KT zv0V0>1pI_6j^)|=O-EKweN_EV4x0;H(KVRme++v8c_gwr|9vPw+@HCoIIPZtS9Ya2 ztj>d1ajkY(od>Vx`p98*9z4o*8CmV`tMlMBU24~e_WPGYd9___9aiVV>$;{otj>ow zaGh~joeyv1iUu#nb3VM8>n_Y1p7Y_&Tn5Y>U=op z)50~Mna+>4cHLpFQg|Q8V_m&qmQ(Z9o{(>WJGu5U$A#Vjj&nu8C{^;4xc+u`O=7MW z8uk)APj;PSruDp!s~)6M@wXR=26=zi24-5n6I_9CRmo}nPIM(R)B2t4I?Wss)&;(e zaz!tu_^WZfO?541ruBE6>khIyU!Dr_C%7V)sQ77OXYdr@iLUX?A9a2ac(Q8)^VQ%L zz|&lTODX=I&aVN_bX8^kA^0ueIj)7wd14L%&v)%*UL5=-aGERlWl9h4&j7#ZieWAo z{wMHDu4T-P67qqjOI?SUcZU@PUgnBeM(LL%RRLb?z<^Tx*zX#G$uC{_PMF4roG zUpHLU|5H~N=I>B`)HRj43(7xtsn{^S;e5ODCyzNy{^UuAssEjJnEc6a9VUPBJBO)1 zo_Cn~<3)$5KmOt{`IA>1CV%p(!{kribeR0fKOH82@}9%A-b=S#KkCnJhsl4i947xE zz+v(qvO7%q<#L$Tjdi+4`!?d1ynAX!mj-1v{57T<-VOk$OOzWYCX+88X zt%t!*{DEsRUy5A`#VhKB{*C!bS%gd9VUAWbC|~a z2#0CBr#MXGeXPSY-p4x(;}P|U+)8c+a1lkIQTQ*cii)tYsQ=d-s9fGydn4!@cZtdHI&{+QTc!9 zuE#tb^WX1&5!tTqNA4ZSc6~o~??$%k`?31~$>IGA)jtopBiE|@&ui2_54)!#r-|L& zZbEsVxwkV{3$bA3|H2)(j`Z0+sxa_zcU9(y@G`(B-E)Yo_QPufpLUO0uj1S1zfQZq zM7H%k?fxCv*7s}oZDd>DuidTB08ZXjVjI7$f z1=z!F9AI7?+!@$3Lbs^+s{bSa`x{M}3x-bs4m4IV2gbYvoWnT6JSTWHaBidgR!Uzp z=5^rwMi=G{!S4VE8QYncBpn1UWSn8X74|uBh*5PLrT;47d*D!`7xU*~SAfHfUCc9k zyO+W9FXIC9+^{^rC5+nJDSdeF62PU5LChn=o&YXu9AfU>>nY$0#!coZ)!3L6Yu%{a|$q>KfwVOTpLI>etI{v2>EqdW6=qm=%2j2X;b!j=B@ zjI+pge`{#mMYj7}jA6W?^0WI}jFA&ry)UZfw?;-kW}4rc7<-s$erslg?o{d3{?^OO zV1M0c%6uzKdA_ZT#mr@gz5(3EIKcdU*k0haM$nrA{-ud4qmBc|8ugeH!+!woV7!QI z>)+Yffo$vF#n_E(>)*vVKynx_YQBv#BHx1SVf@g1+ufMTO!IBLae{ZW}0skjG$d4r}=iMF$!7r?_0~@e5bLBd2z5CJoORA9cFXnW56j!}RI;SJoJZnd$wNHO2{Mdfu|uIKxcOThipjkqb~E>HtPJ}5u+*dtpp`MYP4m}Gg!%w8ga~@vUm&oN^yGquk#V=MC= z)bF_Q7PDWQoM4#a#s|zh`+l|p_KS^=nLq1$4EYOYdLQAWahjRlM>uKxz)a6OzcPMd zrsths8P}O7_c^r!_MeTr%!~V+MK(X6_W2gyZ#r${VEzlwU!69BnD6wu0P(*zLYZ^) z{sXxr^U(q7eEv5^1?FD{sPp;X7}c4Jv{BC|zcuPGm&N*jYcyeQkfPf6jM0XTv4%OVZ!q!}<}L9>fzKOnG9QdDhx|Ts>VWFN zKN=q~zc`>i^5@J0l9hfJj8n|1$x6Qq#yRG~_QV4GmZc3<_KmQ|Jlu_nQ8pzFsCrn_|IX^VW#n)(_F|*<3FdloSDXdE^{q2jsINc zR%ROCxy`qjX?*84KVYWuoyYu`nZ|b>^9yDg-+9f`%rw69nm;hp_|0ej!c5~gpLv~` z#&3S}E;Eha{HD2&>`UYKF*64dZ8L z3z~J9Y5W#6n=sS(Eo8P~rtw?I?7~drH`wgOOyf7$Okk$*8)6P;rtuqMj$@|rTiBe; zOyjq(Ih&crZxQnaW*Wam%w^0penZVQ%rt&O%`MC{e#6W+nQ8onneQ{x_zgEdvg70U z4L3h$rtw?UJjG1ox2SoJnZ|E~d5M|EZ-jY`nZ|E1^Dkx^zr{>rKeaE7-{NL=W*Wc6 z&BvH&{FX3_Fw^)gVMa33_>DBnGt>BuG^-Kw_$_JHbNDKZ-;(B1j!)}fjJcYb*1s6@ zHD*4KW4^)6=W)zE$hJS!*!+s*TwY`IoWoOA!TW<|%>z_lDzCrUfSJncZ?<5j@&=gg znW?-1W_M!Ff1ugV;exNg`&Z@?j!);&hMKQ1(|NR^<|gJCd><{z+`-%p-$zR_-(~LE zQLT5w%>B$s9o2e2%sj$O`X`$wm`VR+^DOgWJP$qGyvY1DzK=ZI{GFNJ2O44CW~TRn zMwt3Rv=7&Bq#59FIjG-AGm@D7*U@HqX7XQ0o7I@<{lQf8DQ0?qFx70#Oz#hlFdK};Xo@tI@ zd5dAnKbU1sVtL#!@W_Lte_0+vt1{xaKK%5oFW&&)AbGv~zj)90A4A=~XW z*E~pauFqWasKY5xpSk9BPEYk&VBTe>`YbTbkIA0&K4+SlgPGpvOf!R+>3z-@%ur@} zpYsK?B=g;Fs=f=&3d}{jtNJc9s}r++FPe26?hFOLXm;TE^#0~cW_M`L4t2{mtd(L5DSvuQZQ3tnNownm-crcz(sa%uMa^ig}Zn?nhUf z;t;hD-H)y|{gCbUf7L8Xa@Oxvv$Vr%{&>}lLALkz)|s&+=knK?U74x;b!J~?n(x+| zLzrp4TW^kHru)+k=6GhhKiyzXL$=@l+-S~0w%`BUXf9+qz5lt%e3|9+{^ut1Rb;z< zubC&2?fd)J%(D)!g!;W^-XP}sY%%XKQ+>9W)+b~?djDmsnUk5`f7xmlK(@=nj z+jE;))Zy2lylrL-r!Rs2^&4hO=IZEQzhQP{-h$_|cbYwz-^KIUJIw*it5ei^^QM`^ zyfsDjr#H=1<_#m1{4H}L^Ue`U{+2m|nDu+xobT`(px@i(IgU@`{R8t7Guh(<^BOa~ z-@4cQi<#bM+-n-2lD+7C#t+Tx%=A9vhvs9!>jASdGo7bAXtrji^OOh8&dl*$lzl!j;`%)ZR`(0;#|LzuIn{1@^HQ9Tu9}CL*W!G1)jYvmwUt_*ubF3<8?;jE^ELA#vtJLj zpLN~5!W`a1?Ppy#ZxgeAH%xgH+Y4B(hWD?`BE;6$Z3+Y5HcK#HY*P}sJafagO8%!= zmAQReCI8cWiuo^0f5&XZ9DwpWW@}{o{qw)fPRREA;D4F%%=A9^U2`Bay$^oZOs4ew zKKMOzKC=Bj_&swmvc10CGgnc3e*gTQxdGWO@1FTOGnFT-cbKU>VeO;zT%Kl~N4Cq; ztY4As@-*wZ58rk8NwAM*Rs4*`2hHcE6~#>RxoOp7rup2mnljUTZdvV^X+HO};+SbZ z_p|yi)B6Pe)?j9OpTOT5Y0L4veSr0}Eywfr0oGLJ_%3Zh-#}{)b8454$S)Fe|H)=8 zcUbMWWwSPO{2h(eeq45IC-a`hN}k<%580lNb6BUG^lCoNVSVp#Hz+TM1wVNS|0c6P zklV7D$zHjwT+DPnK95y^na;=OvBH_@{r0?8DQ0@VJ+D;}+14kY)r{m^zkF6Zhlheb z`K%;PPy6XX)@WwhPY<#tG9Tza8R8ePo?|}Ie=hQT=A!+U02j0tGe6O94e~3*Tz(;I zqr+-Hw2-xn?JRPD!xTCOk1{x1(z<%e3?h*`fdE1$!AA^$Mz364+wJHo2YOzjn6)n$G@@dU&# zW;J16o%lU+TjmdOelKoyVLp!YdvU8DvfW-KtP><>eM(qo9KH@&xPIIx2lbt3J!A zf5uqNn5lopSh38xaeZ!Nb>;LWaD8rM^<{Zad>+x*8p1ptpGP#dMlsWVZWC)fGwtU# zv8FN8{YF!3E;HS4G_@8n(|&C;YXvjy*EX}(Gt+)-b88zj?Z-B^cG>Cic}NRuFEj0@ zwy-{7rv1{E)|bq*U)s|8hMD#|TUqCkCs?%K*~+@ia@vn z!<}A*^H$b&j!*r!yS0m%`fqpZLuTqfJ*-cdssHq_jxp1Icu(saW@^8l){o3&|9I;% zGuc1hy2(uS>t%@()E-p7UX~v-)vvdei<#=z+bT%R_3LAWJ3I#J*T;(D_%wbJth&rJ zeiE#v$o6<2Z1r){tNC`YHP~UbA2QgQ#OcZ3PPAq)lfRv4Enxlv-_IRtEnz;7@8=G+ zRui+nN!BKZReK~^?>el?A7$-#_+^lfvd$6n`k887Vy5{o)w;$^^V=BfFJ_wG##qKl zvM=dB*2>OI`j539BWC@^S)mSZfbz##vp7Ee{>2O{jhTM`VutlH^U(HcKAdU2$~>{X zn$Koho0)&a{j*utPUdU4e>Tf{kNFt->$9zc%-`Yt&TQ*5X8L`{Io4Oq^!tu;tnZoW z_b=vJKQq(sU(B_xGShrE&$`1*^VvMh{T11Vejns{D;qPtANRbKpPBYo=39lCX@6zD z_5ZQ={c%}VcmL=9f!^m52@OjV7X+4Uy0oyeuxMM za-&TP+fC9I54dt^<%aDhu}Q;~O;;^#FtEi&EjO&(bo+kJ`MmFsmuTjGJiY9G=IPUaNq*yz^$*-e10nsgdTb8udU8ujrsp} zAW!uB;$;QCA-FAPlzZ(M+MVrsZHU=(Z zjqCZjz*W$EJf90(56z#CJs-FQnm-?VJ}}Sf==L@R?qDC=+Z4E4bPDbNra%+=^Yzgd zcm|rUkG4PyG|%tWKpQmA@7BO}XrAAf0=uAjeqRc_4bAiWlfXOBJik8){2rR;cU#~i zXrA9~0ky}>S9E{c10$@yKd^ksB{cr_z(vsCUNX(=KJU=Fv{GSFE zS{;3UOh@2()|j8|fr!=S`7!4Ivu+P;DL3rJ?z)a`3mV@2Fjr;=R8FEt-yDo`S~$>0xi&4cRfP>+kxVDxqsGOjikE*OQ9z$ zc*g4Sz3lgoHNSNIb>I!?`?9u^?hd5?mi>$cJ4yEhO5cm>ZqmOA+y}k#ruVE~1I^Em zc{lJhbk2eg$?pv$zR&$%zbU4Xp3fYZ2+hxrc|VX1{qoqM&B4&L!cAdcl}wU`vc=YF!jyzV;k6NPF~BXnuZ- zSN{Q;pC9Ab{y%a)KR+f$w?OmrV+QGm`q}5_#|+lX_VajW*zpJS8t7B(__c0@KHrYt z(H}tnxyXz^RwsSP^^_fdoX&^dXvZI~AAo++j(@mTA8|fEKjvh8FEl?tW`wSR=I6(p zqH{mye13k+se1eY*8KdKk$S|RSo8B^M(K3uv#wuF<2y~?0R2(Q`V8Fx{oB+|(kZ%M{NIuutBVeq zdgggDMxUwghrVadA4#93H;R9d^f>(i^v!uO|3%;5>)>Cw|4Y}!k^ZcH1Nv(-PbK|1 zJ^iojpM7-_>G8S&`t_^QNKeocm09YdR1dNfh*f#&DQOwxOy`FS#v^!w2KJehO!htT{ynRE1Cq51vvxq7gNx5w|N z&(-nJ{5+X-JrbIqCzGy|q4{|-lXV(2KTl?|J_nkgCv%?8hUVwVoTr~ z`gERt37TJ@&eN|z^Yci~*RMnK^GMFuozVO|nG5v0(EL1^3-mr{exA$}eE^!DCo@HR z?Vl{UKfuo;xllXM{5+Bi^~ul&i!Y+%caa_qebU@ZtxknrUvvfO3_TvYy(rJ>$*i%z zQ}tB%{CtP0dKxr8-(jl03Yy=)U97Kz=J#(G>sz3CJeTO(p?N%)=!MWco}gX|&EpB` zO4b-prmlw1zX!?GE1~)KAes6RXrBK|_2bYy|Cj0}Xnuc^rRj-=_Wb4dCt11$n)f$b zw?Xs%X6x$jo#_h*;sccA(AXP4>UL-YIf%k@Xl{C@p%t?ZwSiGKb& zT?bgx^F_`3ndv$nnx6+VU5|q1=fULYWN3aKOpg96G=F}3g+2$GKfk>~Uj)tbaiz|J z=J~i%=d#B9=jwd;{QKfuT>#C$FV59-p?Q5ZLoa~l_0NZKK|gi_>zknaQEw6SeQE4}1^SVTSg(Qp3G_42^PtZQ=^-==G3x%=Oy>!8`cT|aQ0+rM3}f@Xi7UU9wKpQme~*)P$d8{B@0UI@+p9lF5& z$*1V}?$Gn0*}qc{UkK|%k&N3bNkEmJZSds)#XpQ{d;u{H2Y;b{G8h_(@#UQU#{z(cl+hK8Jhj& zx?+>tU#=g5X8%jN_=j%)OS%-A{r}LxAG!Vi&@-Xguh1DSZofk3LbG3~FWBt%EA@0} z_P?ytUvT?h*4fbPSLumAcKcO22+jTqogQ)fD|9wA`}gUIt#1E59fW58em(w0w|~FR zfM)+II^kuv{}r7I&He-W-Phdy1NviV_N#TlTW-Hv&xdCJt2%$T+yAOAhGzdi^~^nP z|37sIn*AD``?lM!(FM@#Kd4`Q$L&9;JE7VCn(lw!?SD=Cf6tozuj{~vZvX3gBsBXE z>G6MY`w!_1X!cj?nS;Fc^@d+xR_YKm``^%gL*4#2^g(F$zp3L-ar@uYNzm-q>gF+S zzgD+Ev;VMub*$TeSa(9R|1I5drrZCP-VM$ExAnHO-2S)q8_?{p(hcL>{wlozn*G%} zoaXjd>!+dFe?-@P*6lx{o1xi%R9Ae??LVp?f@Z%?mydV*b-D(c{WUr?!R@cn3!&M6 zOc#9K?LVgHL$m)K-Fcqd|Bn6un*Ff$U*h(|IsuyfdOhxPw_mR>fM)-3-FB7Re_Zc` zW`C`IW0u=rtKWrYzd^6M+3h#zC!yJYLbu%J_Mgxl(CmL#KYzR1|E}H!&HnfFhIwxP zd%6vp{U`O)C2s#o9f4-QQPS5{y%Bo2@5`ju>&?*VR{ub6g`RWLSIK`yZ->5ju*u(`cR`=;`3C8YdJpsu2R%yq zS-ls!z}GCVdEcy!C&mW9~BZQKjA({4DuD(nF!|w%cpb zBcOj}x3^i3u{t_GFX*uY^aSL0`(B`WFX$@<_}2{3HxAIZ4$ya4U8U|nX`8M0tpWaH z1N3*1zkTRyHhU)pKe^GyVfd1+L{fz3Lsq`)ztDH2Yh1?bqG@R^0&2{!2Rj+iw3Q zoeje_5}3*6qKnpM+-rr}}~y z-2PAXbZGWFbn#1WzeATov%g*Yf9CeL>jY@_f2Jq?!tMV|2cg-2Md!cm_FvJ((Coje zpWo~DU)9^7+25fzyyNzF=r(BfU(-+j#_hkRBhc*sT-Uto_J6MHpxNK4ALw=aJM}7P z_IK&|zjgb&bU8HpztHo3=k|Z0mqN4uy3Xx$`>*Q)X!hUG6W??DZ|ER2`)}&;@4Njs zbp|y1ztr)+cl*E8Nzm-SrDH#E`)}z)X!dvO503D6YqgK_+25o4pn3haM;|=Ge_Ox% z2Y3Cq^~ccM|5v)_k8b~0x*wYTP91;H?RV-VX!g7GM8D6qe(a*pyI8aTYdw94+yAw` z0h;}8J^y64->u7`+3(Tw65M`|UJA|rUR^xG?eEp4(CojXgQvLtcl1nX_J5-@PIddg z(YescK1+5fFhN^|?a)f1uF|D8_!tlR&c9uLiapAMhn z_WShH(CojbKc3?D-_wB$S+oDXZq9W3@9P$5_J6M@Ug7qCuY=I+f1vZPar+53cO{yzN>H2Z(h&9}P!Kj;={_W!8cO5FY*^-gH^`}G5NyZwH>3Yz`>dc(bLf4^>n zX8%Jy@5^rgL%kH5{f~5{+UW8JgT?SHKMq1iv61CO}<19~Jh`+w5&>)rmJ zbU8Hpf7bIJcl&?VOQG36sB_o4{e!vyn*Bq1VuRa1q=V4x|3!~~!tMV>XF#+6S3T~# zZvU_P0%-P?llnckubgyf_B~G0lWyPROoV3N>l{47_d2nSoX@_`p+{P~?jJrU9-4i> zbMOe?@5DB_`^Pw)(0u=kaXvW0ALO((yXy~fc0zOg!A@kI+aK(_3eA4NY5Bg}4>%pr z>}%)wr`*1Fwn4M+IH}LOeaA_MW`Bs&5pnxNoZZmu$2vVfar?1OKQ#M8oxrPZf2cDO zn*BJ(zr*dvISJ70pX8|5-2O>UJT&|9&h8`pc&G0Of0*;e&)xlpIqyPq|KZN6-EM!l z^CUF;Cp)ow-Tui=A~gF6PT(E4pWuvyW`Bg^|Bc%p;Uqw_e~R&MIj3Pj#9< za{H$`Ezs`G zlJfvG`^nDkX>LE+>4Rqf4Cjr@-2NHPyU^^XI6E(Q`zcNjH2bN}^V8jasW`BZ{o#*x^IQh`*f8H5C+wFhe z$$)16Y$u`6?Vs(WLbE^7xuC@DPjse3vp>n1c!%4c2pxM9BS=He7FLa)SX8$6m_6fItk<$RpeuneVcin!5 z6NYAgs#Ehlw?EaXgJ%C?XW^4>|6->Cn*B?h+(x&5iBka0e$biuUv59>grM2abaI>A zex`Gy)zQzlE_H6RI{Nv=rOsVeM?c@X)L90-Y|x+S^Mfp>68aIZzlokl=u|^b9%l43 zXC?G--%!$*Ijf=5t-jo;hn{oNDdbOg8lmqUZ1QuQ_0Z>gPA7eZvkCf#gT|4*(rJY* z@J%9}>$F2ZGx$Q%Gn^gJ+dRg<%6Sudy!Eekx}g6$D2x1=PA_zy-Cmxv4|?Wcv%PDa z16D`p=UT_pZ07T@)>c=kZeK3tU+bJX!2kRJeck|l@c@09)#mf9>ukNd2l)36&|gOW z_Msu0-!Q;$hVSv;Vf~*C@P7gSMPI4)--jL@C?lQk3|i;j-&s!F0DZ~;{h0y!Osmc3 zTc-Xj=VItT4>t9$bFMog|9a=<0s6K9`mO=`9;?mgTVJMn*E{qZPxX@}=HK=!&A%5d zjF0!Kl?&qIeQI)ke7r|pc&|HRa)ypQkqG^@LR-yetNE$gC-wbDGq+wfa6BK~$u-Ru zqn!7MBPRdCd)?gan!ZEF9`0-Q*UW}H;^xP4eYEfH9QxZPb~d8(z@z%~t^D`a*?QIC zF`HS9?lqqq|J;9fEHK-8yTHsg^Ay_pk=(dGxKGVJ>@s(|+}FgT`R<6x^rOxvpY3Km zi|M#~)f#)m%~cRRUK}@9$C2mr;-jvG6S;!)nFG(*V@1qJj^5(YXZz8S=sAD*XmTC* zIc)aGM|*lWCmK1t*Ib9=?(;bsIaX%$iZe44J%2uJJfD6&>N5|I)6CV8l|S7*@;Wm4 z$GRRr>HO#Mf0BD5NBn>PJ@fci_mTVff8$CquWsfV_u}4u^gbSaWgVGw?AOO*UCV#} z^?s~sCwgZ%kG#R#-TPm6kNxy9{A2g(zxDVYeOCV~&i{Y> z*qKp9kB%Ahk*|QpJ#yZnk%6z#$FCE8WjwsCXk=iWV_je7>gMa^k!faxk7k)(bA$2m zG3vv-`1nC;%USX9gVijr4%7FZMP|%qF9xeSi_DliZ!=@Q=HlbmJf3^cB6D|oG|L<>Q`1k?%(hJBK`K1g zY-@S(@hTiS4`%#koTjFkb5qT4EC2m9&DPINHRGH`{~kUrW?Sy9PY;>x?!3ipxB6Ch zCUcYj-c*zG{S%lm&N2Ub)oHU$g=yCwu4!h>tJ>+`Bgfz#&l&bTUHg@0y9X{e+ucR~ z`e@8%P8QO+7o(n~`5B~~%Z^vaUGvlUz-^hW_>Y*S<5xJv&d;h@?(vwKM_)(g%#5My z#hrO>1@h&KWguTjpx@+jA+#UZI2Rl{@%TX8!1X96j#vdA|D+^ZsjY zkp2P+)iLw$Njdh&kFMiBre=?#=lSkS>^vX$eBf#~*mLPy%gh$X-Eerj88-6Q`6lwT zJ$rvd*QS|y^Y6Pint%DzkDHd7nM}ROME*M8jKLk5ZO>A3U-haS;m69{VDCjcZ!vYu z`FyOL>9?D>d53i@*TlW*M#(YnRXOwUzsWX-->>CQ#Q#pPTRHr1bSowj-3oJz&BhON8ncb?R=7@|JtBNu zcq>EgR`}m#HxE26yzhK8KYOzoZKFMcMfP(Bj+fX^JosOC&RRQT=Us1l&6{cd{j1Hy z2(5ecx%%&jdj|g2mDqpRdt`G4Hro}H`xBmHZQW!Z{XXc#Ge0`boRiT{Q_Wd)^gGJO z{{87CUBx~+B4&PgooudX6ESyq_h(jorAKqjJ$aye{$uuj!uw**foNa%RdeKfPxDIsReP6npHWAjjYpqjycNFVMfu?^@;mFV+B;;F zyIpe?9Dn9NX-}j3Vn%+9?-4QwULCykr z|M=(FrkW4co|`@)L zzh)~Z7CH8raIC(clzHqk;pn^B(UBwXZ%3~gOyrGa17CTM9^28CkDM_x8=sc*NwfM% zd;RI7I(nSPikx`;V`m<{Uq{cXxyH>mM`jclmykS3SiE_7V=KuJwBcF6vkM4`v?une4{2KAeueoL&8}UDZe5tsEZ1Ki~aljqt?ke9}3_d-_SMl<3*+zT3FDnV+NYTBc_7 zs*J8Jj}`gno%#Pg_pwjAmOuT>JpQ*}(eKUqJ-1hwDTm1M7U!SuyQe zvo9AN@tMCl?ibOwX6DXmu9R6fnQG?SpBVf7+93NGd-Pkj6Z!t@=xY33!;fj}gVcn( z%y&}zt})+#-9g*c_S-SXe(N;EZZ}q)LYYHV-|g}7arPUilk7K8@#+Wkt=2F#IxRka zxcw&LWTokQ`~-Co<&RKbqIJkA>iOLG_*2!hCGqhi)i>z-no;U$`i%WF)kxJw(?5AoxVv)QJ0;-H%-T1TmDbG z=J=YKr%&B!=6!bN{dVSK?930cGe6kQdBD!O`9{)wi)vvOcO7Yqm z_SqTs+Zm3rGd#%7@L)T`0XxIm&ah)=c!-_hSUbZ*?F`4+89vF*aJ-%2VRnXx+ZjID z&TxXA;SqL*Pq8z6s-5AHc7{jU89vR<@Mt^3iFSs^*cqm?osR73bTyfKNc7D7|LY7f z*Q}ZIW9>x)-5I>BL7Cetu}Rzyj$|T9lmECS?zE< zdM|a)^I^Wvo-^h?=~I`{ZyV?v_QmFYyUKnGc4W=Nz4)7GzPm=hB{zMihuk@CZpQPE zePeFs^XM5c-gG(d3NpX>8Da1Cr`X>?ovM6vMvYWW$M`MH z(PRGCMa<0eZ!OF|9{vr9nGG|-L4U&t`6%;mQA{WDl-zF9f{wLB*u~%PWwsKqTcO7V)BZYk zD??~2@$s>r`g^&S#i`tSYv_Y9oK4E)bs zeO@()J{w4+UuY*$+eK}=ilJDHN>u^ULx~Sn3Pr_5`)>Qu`jYC#f}3`!8xu)S9WSqxOAjPf>fC+Ing~p!N*44b(PLdzRXB z)SjodiP{gT{fJr%wawICp!Q>G5o)c}UZl2#S{t>k)Lx?Y6KdP2wNrbU+E1xeCQ_S3?Hp?7QcI^cnc8{O&Zl+(wJFptq;?Ut z3~E!UT}!tyt$^AbYBy86g<6POA+=kn6;UguHkaCM)NZFXk6H<} zJE+}BZ9cUH)b6781!@baEuwZewZ+s*sV$*)54A5+TS{#iwR@?RQPYb5TE;NK7Nyv1(*rU0pJh?h#IqI0vk}ilJQwj?#Pbo)M?4?#0>ldtFF?FlU48QgnvnTw-Qt%B zOOaQKyi(+qBX0%rYLHihyc*=~<+!Jv{zu&(E&9nshDd z)uCPk>NTKV1L`#+Zv*mLkk^8|7UU(+d}jNUGMG!a-qU;U^@OdS)un}2^E|hazl?MT za1)N}CeQ0L?x*-BPvVRRE&e>W)?#1oqZYk0%wq%(;5csbe0Z~Y?A}hQWA<~Hk8!8E z=PXlyljjQy&12~{c|r@@2uH!+4L=P!LGgLkgZ=8ke)V9#`Vj9!ybtky#QPENNBkh- z2N6GrxSx(g6^+x6Bvh*UIy~A zk(Z0ST;$~-XaLdigr@dvScdIKEySU*shsFA;f@d<(9L8AA70Ixo%rO5;2?7@&Bn_n}F~ zPxZE+H`3x4ZcjF-N^kibVW#iUy_0R6^?2luNB(#(=Z~lRrOD6n_Fa-|(3iIC8p1s4 zZ|djy+7{hGINSHm40B(cjr-~-?<-RmnK+H-i`GB)mMX$RU+)t0SH<#tA71%Qi{G2^ zD0CS53Bp2e|HbAyo$YyI+IkyrTl6ep4)$}AuV88m>1DoK?|qT5()V`hHo_8b>*Ci4 zt9|^}`+Ki25;?sW+BeEaWBCS0jjU2+NGYTwy6Urt!>TXD%u zt9@m&2{XK>&6|(--8Oz@>6ZxGeTy#niq*3&ddT8=*VI}3!RThfY}(#y7X6F633IXi zd|(0Lsq~clV(3iYx9$#-o=@8B|9mgspYnVk%`i{H&-2}M(L)y1RYtG&y^!}U!cydy zBEOup+3pI|tpU~o>j=$u8wkyIGJP>$oEWE6GyDecuP?rq^agLuJxeV9?&4*HnZAea zSwX1%e1G16{u{8}7U&k}HqvGs9jLn#xSP;yzX!Sx*bh7if0$>(>q6ZT3Md2 z_udPKnR<^c3la|VJa_pF!Vbmz*P%Xd@B0bV-@I;>`}jUm?&JGNxsUH7D-d6S_zJ{p z5U)YJ2Ju?NYZ0$Sybkd?#On}mK)eC*2E?0veE-_u-DBg1k25bs%pi@^&I` zC-Qb9uLpU3$m>I1AM*NeQf44eHb)UW<4w;&q7EAzp`g1IE{k@ohlf2IOr(UJLTtkk^5{ z4&-$pZzuA0Bd-T}J;>`pULWFpi1#7hk9a@g{fHk#U4IN8@7NeVFJfc(yoinA^CBUJ z&x=Ilr6MmCd8x=7AM@o~zDM6PX8HzSvYs#5 z@(PewjJ)~Cn~%Kt$SXy>6!B8T%h7)Y`qv<@26;8et3|vP@mj>|(7yrwn~~Ryyk_KW zh~ag{h8SLFY>44?!-g1MH?+WSf!_kZ1%4Z_BWBMMv!0#eZCYyX?1Vy(|+iKgr?uY7{2fO2eI}KVjWA`)Jq^VbrON8!108pUOJ(v zlYw~pAby?5Mm!t!a!H$d`N%5(789B}^Px+D<-is2YoKd^b%bWS4Zu2VrvccE_y*)R zV_YrJZNR!g{Q6Zlh+n@t5N|-d0r8y_H{*{Tg!x5Y53rBW&M)*b#p|&txUZ~KdzUrS zlOr1Gb?gTg*Ub1KVUGWmvpz@vBR9wYpDAY(=J|OYc981W<3sy%q4ihZd@132&*!e< zb>ZekGp+veE!SC`G2>>!Jm2Y4i!7ctkJmvPXO&pJd6D^FJcW2)I2+?C^dw~5YvcJ> zRT6fnXRk2lSD|Oof(J+s^L!`mYlJ2Kwb$2L_Wd^TA$C?MgET$^^jiXA3d^9m`3j#CJ;{YyfV&Q7a8jLapzji z@7Htu2kyC?biIFB;?;zSgZJNk8)53;t8c!SaQtBIM}K?Bt{Zavqb`4x;!`}lKA+-= zj%!=uT8gKme+K$zqklH~FY*WO{wd`RqvQQc!cm03Cd~0?-SS()LR_~~fVqSDcsKgr zyXOG;jsCw}rs(%?Q|LGhCM@xP{nnv`xq}y;Y2H8N4}N8tS=Y4E{H0Kw#=CetVTPJI z`y7kUEjE4zKL5$ad=y|i1*lVuI@#!#t+-z{`sJcu7d{W@QoQ|KCs8@&Mkw5q)dtR2J zPATe?qD}+qG^5T2)Tu$84X9I$IyI+(}Fr}sMCQu)gC?{J5Z<5&-d+W4a?Iv z3+nVB-yh)f)F0sUAU43~VGsKCpkGgP`{aspyxAe&f-v zAN~5#uOIymqF*}trK4X4`W-~SgXnh<{rosS+31&ze!1x9$8qx0aWdDHAAf~6Kfw2q zf&kw~iUWKfNkqNk0M=6hKK~L?ClPfLQD;8tl%h^K>ZGGiIqD>$PCDwOqfR>NtU#R_ z)Tu?CT-2#Wo$;uXi#oZelZ!fasMCNt&8Sn1I?bq)fjY&gQ;a&rsIvieT2QAAb;?nv z4Rvx+ryO<4QKvk*U&!yk@#(ubaJ|SC;*8vcdQ6 z`IE)JT;`zSUnKZq&&@omkE1^KR7HjXJwgrw94j*pF=NM=tiG2mN}`uLu45&@UhT^3ksV z{rb?a5B>VkuNdQ=k8zh`+JRi|g6T_uX>TS%Eq=sFR2~HKVLPaXEB+{fc6_whK&eLRj8=+}UL4d~a5ek;&# z1^TT(zZ&%0fPNd$uLb>T(60vlYS6D1{o2s44gEUMuNM7k(XST$>dzYh&s)vvlDf8qRvj#NkyIUsFRL5eW;U;IxVQvhdOXf5S zI_i|8P9N%|qfR>Nq@zv-@>e)~KU?AO{jA2}`&kD1WuRXM`embEE&A1>Umf~oqhB`q zWuspM#@&o@Z@{<dKrw(;WQKuAjN>Qf< z`8%;6JFy?Tu^%<)SA%{v=vRw=J?Phietqayi+;7}SBrji=+}>a{pfcP{p!%K4*lxT z&p(8(hu9%}JtPd_>uLk)B@E%~YB%U5w^ z2kNAwP6p~^qfQU%WTVbO)agN;9@ObUoj&B}4&n1JcL<+<`9t{p>qEaj^y@>ve)KCq zzXJ3tM!$aa>qozS^qY@ymtx%I7o_(B_kYx>L7iIE zNkyGn)G0=tRMbgDomA9GM}8glqYnGgfc;2EzjX9VN52g8Yev6j^xJ@b8R(aRei`W3 zf^oND+#MKqKI(N~+zl9aKI-J7PCn}FM4jEJ(}OzmQKtuWHlWUY)R~Vu^HHZ1`F+@r zKI}(7_M;U2O3|+r{SIRL{#d>qVq^Jws6oBhSiT&LM)$u39)?s zCC2jkSBrkN=vRw=sj+-Lj>q=XvHfP$OUL#TWBEL4MxAEVX-1vl^lP%||DovDTqA&^ zfMbBkz%<|l;AG$w;51+kFb_BjSO}a8TmW1Iq~G?~aa01Ufe!-ffsMfRz>UCm;2z)s z;7||OO#@B^&IT?3#&|hT14jTy0mlNSb_ zhA!|Hk&aU#@8dRJhj;OdMes|#zq5J?^ipraohHBB zdnMs;wH)yZ??YBsLa*@duz3%7&zNuWsu8d8F1GqX=!d*NBORw|y(1PFT;;vZVx4!3 z#jrQ&F4Mmr`3>H$kd9MNdVguL*?ayMjDFhtHH#a(zp?nd_rirH-s1f_;c&GX{UhFA z+IXAyEc)MUacZ0QE{h%B=PbVJ{iVg7-k7_M|Asf6aJYIC{daq-Y`oL^yu}{xev9vV zKfl=I_j$_*hpYFH|ADu~#{0d0w)nC4yi${Q&|76u`JN>lt~@?-{>3T3@6R?K@MY7p z>4qzfc&zVX(s3%@_iGy;hIoSSEc#!dbp1k)^vxq3N8h+UWiiRuZ!y(3;fp3d&R0x0 zT%{p@yl;z*PxK`%HGaCU(BcKYI*S>;pA!yOQ;{F^`RVuRaVpz4$>MZhfyG?kk1Wpg z#ocTCeBV@yH~79rIGldj!24I=`<0D{d>59PykcLa#d*HhEYA0hDL45GkiXD(H);CC zsqe=Ym--G`EcZ>KpG(H63g3-{!|9g`Tz`dcosB=>`;(1VBVOan`jW|e5c(nC16Hqu zuJ!%I>W8f!PQM7?`$0YM3E(>5df;YYE3h579rz}24{$HA7q}mI0O;}ac4L6az_Gwd zz{$W&;56V2U>;m=z-vjOk9sqh`Fn_>dz!AVPz+~VA;3VJ_;8fr=U=DBwFb_BjI0sk= zTmW1ITn1bYtOh;^d>FVI_yn*KxE{C>xEa_A+z#xr7^mKi@!I=IU(6W$y1E~J%pjg0 z4IBy_1{?t#155^{0Ve<_1E&C|0ds(Pz*)dT;9TGW;3D9Czz2a316Kpr0b7B)fctoCB-|J_uY1d>FXeBE8-Q%z7tI zH3!T(hhA?3W_>eUt%pyaJnsFSXFJu?~l z0&Uha!_^e%3~kmm^m+{))MkA{>rLovZPq!%)imho+N^hms~qTD&Fh|-+N^u%bzE0j zyg~DNr+_|TGx3n-^-i%i>zz0?PxCrwzUFn#Le1-(QqAj}rJC0{%dnkt&Fh>BZPqz) zYK1oIo8js{_z!4a=Tt-2XtU0VQx9og-_&Ye->lMReM7I;$g9(4oikjmfevf4-icEU zn%6l`YF_6wYhLF(t$CfZL7R0>oO)jK`ldzm`X-`zebc6SeX~vT`ldtk`sP(_);Do# zr{;Cd8=BWOyEU(CIyJ9rdbC;B(0y5(^~`Y9i}Ceov#z1_BJ>B^tZ#;^ebD{dtaFB| z{m>t4Uhf=$KB&!lXSg~9tsJxNq4U)->m52z9kb4fQ?U-OZzef>pP3At0-Oq*11te9 z04@S90WJfs2Cf0F2W|vz0&WJj0=EL&fro&}LwI~+foZ@A7Kf-sLuSzRH$*KNa-GHH z(3Q}uq1QmKhu#Ri6}lbz!C0=hGS<|i_ZdTZ`%eHHf$Mld(38OX83P;&90nW(90ME+Oao2;P6AE_P6cKHbAU5|dB9n~*}y{J zTwo>eKHy5=!@zpr6To%A^}vn5O~B2-t-yBR4&W}}9$**nJ>Wjz0pKB^9>McC6gUbv z1~?X&2Al+(44ewg1Wp6y0A~R6fU|(JfrY@izy-iXz-7SY!25vJz?HyEQ`;6C61;31$s1@j6V0UQNP295=$0Ve<_0Ve~e0yBX* zz!|_i;4I*5U?FfWa1n3`a5=CN_#kj4a5ZoZuo1WpxE{C>xCyu!xE0tA+yUGL+ymST z>;>)v9snK!4m*|Sbu4f)a0)OJI1M-(xB$2uSP8rjSPgs-xEixEa_A zYzJ-!z6sm|+zadl?gt(KdPd^@1{?|;1{@2V0Gte*0-Oab0WJrw1U><51?~dw1ICQv z?T-SE1*QQf04D*b0H*?TfU|%lz-7SYz)IkKz-r)1;KRUr;1j@g!1ch*z*b;8a67OI z*bCeT+z-^J;k*J)0nP%J02cw511o{|0jq%z0#^bb2CfFK2W|vz0&WJj0=EL&f!l#Q zfV+Ti0`~yBfO~*tg15N-=0!{`_ z0d5Ai0=EL&f!l#QfV+Ti0`~yBfO~N*8uB*>wxQl8-bgEn}Mysy}VB1>6gaNy6~~4h0Sa zjsT7VW&)=HX8~se=KvP~mjIUmtAP&!>w!-IHv%^SHv?ONTY>Gs?Z6$tUBEYidw^ZQ zy}(}Jd%%6b{lEjjLqJb5jz3TXhXRKIOMnZ2i-1dj%Ye&)Yk>8@CxDH>b-?w&O~B2- zcHnm44&W}}o4`H5F5q5ZFYo~H5YTf5_7|vuLxID9BY>lTV}QxPvA{Io1mGNCA#g6R z1h@dW2v`q%0@wV4)_2;2mG6Sx=H3w#f_54azA0C))KNx?h-HE^iKA!=3%f6h2N zg+I3}gq{n%9J&(vVd&M+jnM0$m!xvNWvQlKGX0;Q#cIwvr9Mw=h_I8@t%!|QcY>v; zuY!F}eG}|l^)lE+YA;xp`UBXN>a_2340 zl2;+IN{NMum8ppvlroHa)QcODSgXW3iIu7Uq#lNGk1lcPkJ%ySA%^2YtW3R2J(9#t z7B?udOo@evm8oktDrFe8 zE^+CRZP7gD->2@-64ZLszPFw!m6!nW-TnSdSQ*$HFFh_SgWvh>zcXh zlvtOrZeo0v^x8bLZ}bqp=$;GH#F~_uwIqop3rn-E8DCIhnZk0cYsMFnSfQ{I>y9&f zF0o2s)z-a~+_1#zg*94tF1ZnjwF+yuuHAEqbqVXW?n>&b2Fv~m)5Mz826B@mmMkpI zy04KNlvt*)9P64ux1CV%^U^Pp{(Qwp;g4^C(uDOeL5-U>~KT?)) z-!94PCdRQ|+r!>{hD2i?Vmt?$Sd+S+ww6S!Os%4NhH+o>#4659kyskBCiQ*l5tLY_ zpluiCorQoS&-GL_e&EaQ6h zlGkYSybjG8F?L(UZMSYBxt+wyR3lX}jPtrAuh-_8v8dRn>mi1@BKA`?nW`iaD^s4$ zG*^;mo?^v$X*Ms1@`B=KikoBId~!p?%G3>1#W2i}8-ON^z@+@lgm9D^owD zDu!WRB(Krtnd1==w^iJB>zdi^Bvz*4U!ZxBye`QzPtJPAt}=Rw@zGL4qg(S3!weB) zH;Gu8x|`}5#-mD>yfmA4qnRObGsVp&wwBj4Ht&mOu85VX?NrY&%oQ=-Zi&q^uacD# zTS1JgR9n})O4f_pXk+GTY?W9WG49cBUGvJ>C2p^cnN@}-F1lS!tVx-?WQnB`<0@&^ zeUe6>DQ=F9nR{`e#EOXV8m^ca_bst`=KfqMc~z2EZC$g!_2M?#nAyu#iM0{K9$EJi za=XOswJ|dX`XsX-W_^`RjOR3!81}=uW`&X|ZVt!j%qf&uiH({4t&~``jhSuKORRwy zS8lZKPpL<%xa~G(M=G&i8#DJrPkeNInpl(iJ@rkNSelKQyIH2ha%{|us!(DjHfBau zDY0rBGh?ZjSfh=Z?Y2s+OPFU^bS%ljGKCciDv*);BJmV?C zvV;{0s}iAE{T8Tw$-o2D(7`t1Bvh=ooe#_gJM2n z7@v*3OR*G*1#RrAEi|VR3)$EfiWNz$!p1IYqdApW*v6iv*jkB2Z0y{vG(L%S65~DZ zmY5o8#`hh{GYm6H3?r3Tio}A%%9Qsdnn`i9#0^QTNMaSl%2W~cFpRfRC2m+^Yb6#T zR;FH}9)@v`E#h`ctXpFASY+yP=1*uph+#j7VLv36BC#N`GW9U^FpPU-i5rqwk;E#9 zm8rqoXg|cQ5;rWdwGxXEqtBM8hhf+caXTf}EirYP>G4PEVHoy<81F}lu%NIkVIg5f z!YYWBsoCvxzDO)=W6x4-t;8ZWHtc0OUnJIPV|P-lTViUoske<{K4O?%8yovmI-eyL zw6PkBWl1bVjQ6NWVih*8kMay-w@Tcw#MVkILX58D4w_SOw}{&*v2Kac!}F=fD(Ybv z=9CylFR>Jf1&NiZKI&l@_s9}AB(WliRS=_5ZKwSZw@Tcw#MVkILaa!qRNsWXcOlEK^vPupFCr3+06*Rw%4USc%R1 z66IA$tWsE&uxguUKhKd^y|A^y8f~8aWJhAH!nO!&w|VCHc1o;EShuiVoA)SQ(lt9l7*!ROS5_Q6CjCY3d<6fWAn_XA0deq3M&#;V)K4&=1*dk!m5N- z+q^(5oqrOm7q(Vdqs=ob_=v<>g>4bmZu8EgdR-Fh7S?OsTgmk#MQ61 z5=$1AA}ozqlWL~Cpu{qTWeLk6)}-E|ypY5Sg%t@aA=ackLusxgRw=AXST(UGbvEUN zB~~wNt*}O7P3l_8i%6_h*cM^!#Q4*)PKk91>lW5atV!KN^;B|n);z*|!Zfia)j)Yk z5=$1AA}r13ZKb@R#4?3t3Cpp0=2Nvoi4_Sev2HI_sgziiuxjfj#L-+ytX|k!VU0HL z0?La>tX0?+VeK~WCd%uSSeLMFVZAob+^^IbGFQTU!ZfiaW$sr=5=$1AA}r13nfp~x zVwu9Sgyq;gbH55ntWa2yuo9bR?pGBOs}xoxtlH+8`&C$C^}^N)YqWXhJ`|BytFSG? z+HIb>4|PhcOIWwCUYlp`Ln=k)Pnb`bCf20P{Uu3a$-+{ErP(}le+fz~Q&^U;9GhqE zFCmE)3M&#;V)M-Xr9xs=!m6!n?k{19trga2U2}hlNNkI+cI%qEO1H#%ZOq(3e5ujd z(8Ty|ktDGcVQJPi_lTgxvV`SW*W4LG5-So`VqNp;M}@>Hg;fcwwt41$5SCcIu(iS( zZJxOwL?qTKY>TjVn`iC^of7L3)-9~p=9&9}8XKJrk1(GwO{__oJ42Ghl7*!ROS5_A z9ubsSrm!qwIX2JSBSI1@6lR{!$}2qcWY#8S?hzFds}xoxtlH+8*Z8o+>V>Tp)@bw0 zYi&egt-`hlYqxo(UYEqWh4ot3RPme{9jQ;4Cf20NXw1nHOA(f4-EWu~l31p&EMYk| zZ{gK%t$LFRw=AXShdZ2lj?;fRxfO=utu9_J~@s^tX0?+VeQ0t#oZ~f zE@9omdWrFOG3u=7TzQ1~glS?;%6u!6B(Y>+<_WHRMx+tr?FJ>5DJ)A^4l(`&Hzct_ zVMW49h;h9NiB$@#5>`!&zm*P4tX|k!VU0HLBbw)k#9D=I5!Ox&^Cz(`Vco)di8ZM) zC(*e!E;ylWvuwLt$@5?-CGB3h3u_k4{FH4eG zval3kL1CG~vV;{1D-u>ItV&olF`k#O#Oj5u71l_M--kvd)+%g^uy$fNHzd|2tXo(w zG1^PI_SI*jbKnu?6Q+sLH}hsTB$g~JMOd26Gw*PN63Y~pB`nA0nRl**5-So`LX1aW zDX}VH)x`LFx_XJN71n6oN9at9NUT-Z7Gdo+Z!_g}N~}v*x3FHD_ZH=;&&do4^9j?$ zn$$;>mn5-dVJX7Wi1EG!C6*~HOIQvu{#Gj_u|i=*!b)tO`Btk!VwJ+GgjL%-b5{;a ztX|k!VU0G=d=D0pSgWut!rE<~`IfO$VqLmMRwb<3=9zEs!xF0(wpLi9%`^2P5^EK< zMOZsAylzRXOIWwCUSfQAR1>4K;SuH&rinEvb9YRVShBDbVQDtc-1UMI%M_L+EXU@V zt1%?8LSaS1N^G9FuT@B_QdpI+YMW>8$`Y#=wpLgpF`k!*#9D=I5!OzuNts_0bV;mR zSg&=>ZwNe-qO;}`rit-4_(>8=7M3C`&E|cZ&ZeNmGKFOc%dvUSQC^|MiiDL|_ZQ?= zNUTy=m9T1?x1aLD5~~-sR#>CW8+|gJVG?Tk`&WtVv~170)@*8Pdd> z)GZWCmRK4wu97LS9GhoeQ$i9e6jowg^9oTRu}Wdp)-~VEhb2}otkJraX5S>%Dy-eQ z-zB$8V!bwIKFRl-EBisLNwu5(kXV|Hy-%@BiRIXs`P8aVVkI_a-y=$_QdqTh&F4*F ziPZ~hw66K|C?c^|VeQs6pYe1`tV>w0b>vy6XVZvlO&cbEX}&+larvt zGKJ+>H!*>Zmc$B$m00&$aw{cPZDZz>j(UkT+L-yYA|kO?VeQuKqE&9E#JYs_T6YO; z!!tR$Z<-kW_LpMG5=*l&``a0b<=B`xZXt;k3M;X$nbQi1RSK)Nu9=sx#Oj4LTGxy! zBC%Fs?bbEp>ylWnjoEYUJlPLo{N6cPVre$^9Q6%KEK^txF}|Wg5-Su|Laa&It4Cs$ z!m6!n@1hc`7uIN9^Xr(1#9D>5TlbeVs!oY@3G21)L2}jk(S7p>)5Mz8X(Q;>MPkXq z(yVKKZ5@zeDWQexFMb_vDmCDv$T=6zX2Vy(j3*)`{%#JYs_ zTK7B}y}Cg5O_(Oe$0JE%$->fz@h^^o63Y~pV_h?+A&C_VE3vMb(+Y`I3ahrRnbWYu z>V-90*UV|F#M*7l%w(6udTq?ipJz&R-!!o%Wq#F^B(Y>+Y1TEf8UaAYDd+8CTiD7>w zmMkpIx^{mhmMJX9x^{mhRw%4OSf#MAuzFz;VXeZtgn2HCjyXwKvaq1AOkp8mg~BR? zRSF9Ws}~j#)+(%1SeG#Rb57CM8DUAnl7$6@WeN)kD->2CtWsFLuvTGR!qik5fv_ZD z$-**)6$+~q78X`7EF!E`Sf{WqVd`QTfv_ZD$-;udGKGbN6$+~mRw=ArSgWuuVV+B( zBS;pODXdUfg|JFtVPW;cT7`89^8{rZ!ZL*w3ab=WP3({MfBw}=tWjdE66+G?$&_sf z%M?~9tWsFLuvTHomqx2(3M&*=DXd;tmoQIOv~RMoOkst>DuvYxYZcZd%#$tkgk=gV z6jmv$URbNJE@7T&Qcsw=Jo-zWBw-<86~e;8BEmX_sp(QhSWs9RjcLc%J9g@r|gbqZ6tQcqY= zSV&k{SVUN-Ff~J}2nz}e39Aqm5!NY8T_sh71%-u#RR{|UiwNr!rmmKH!h*s=!YYJ? zg++vQ3QL+9trrv)5>_FsQdn46y|9R|R$-mOx`e5`=+->Kl7$6@WeN)kD->2CtWsE5 zSiP`TVV%OdgsE#}EW(n6B?}7*%M=z8Rw%4OSf#MAuzFz;VXeZtgsE#~RKk*kB?}7* z%M=z8Rw%4OSf#MAuzFz;VXeYCg(c-jM->zn5>_EBEG#0dQ<$11RfL6vRR{|U>lCK0 zi}no(s}L3@R;FhCOsR-vFB0ptY{Dx_sq5`8E{P>s=6_YGpk)h*g)I9uu?ows*`ZX} zvaQ4-mR<51)wAqJ#MBL@-i1G>dX}{i3tD#RPO4|w4~SI|<6mZmZEV~wsw}aHuukiK zom|7XhngK_NyN%jKe>jn8x$6@?oGd-?MkddSlGHhCf6|T8xhuN-LbFJb|t26jOHZ~ zD^n}UH4NJo7P9W2$u*4K3SnXE&U=HlE3t^MPV4R_*D&teLyZ5&h`K2nOCnaLu6dJ2 zAhDpZkad4bu3;E~u&{M6`z4J)Vi94T*4;|3Vcb_0L|GECGIjP_v|WjXi1BM^g|M*A z`wrzrEKAr;^(?!en3`j%{DoK&G2TYd#!C0l`6989unOyTlWQ3F2n&l?_v*K4YZB`e zrfxP{YbDn(Y>gO?IV7xtSecsiE1DO}zD+DbjC*w2*g=XJ#xZqElqC@>Qw5#0M-mGX z!#0Ff2n!2~2_u&{L> zCD$ABuukiq*+<)zn7T8Xmqd*I zHw?LkVY~N4&$W=S3SwpdkGb~%lcHGLu;1#PnZ*c-irGOFj3`l2goRy_WLT1kS#}3l z*yIL+7zT6pn6r#IA5@N_$H1C%ju^+BvmUelcU5=4J3BkOp6|Q<>;FH_d7i$zs=B(m zySlonx@VQYNSAih@Flgx(Wg+x(d@6NC5yvc;?OdAl`u;|&PoXvJK}4ONW)S}X%~At zv6g}(Qp&j49lv3}8Wvv?mbpkN0WFjBNtbf8;kV=m1^KzKlL%|pu#A!{wcGwmtR;Vo z6y&#cX{BbDuJ$|1;^DL8VajEnu6SWAAa93D~}S|$hn z!hSWZNGaiBA0^gOaE6r9E_Tmf*{_B*D`i~l<-}SF_IpG~acG%r`5XJyup*^|i#?ZE zOTm7X(k`~^@9bB@nw2sx_H1G;1^YcRq&UPc-2Py{8kT^9=e|aDAIXX-ihnC3#Vl4&xRZ6(nCy2G=$EK9hF1A0vxwYiS$}xI|l!}xR zN*N_NR<}?pQc5VLl+sGgN*N_NF3c~Xlu}A7H7jM5X z84Z&Y!kiTckCtSt+9=Cx`opD-|gvlu}A*rDmm!lANOXDHSOt zlu}A*rDmm!lANmfDHSOtlu}A*rDmm!lANabDHSQDm70|@N^-hxt5l?vP)aGKm70|@ zN^*wgr&OerP)aGKm70|@O7aiQPpL>Lp_EceD>W-+l;lj!PpL>Lp_EceD>W-+l;kYU zPpL>Lp_EceD>W-+l;mv9PpL>Lp_EceD>W-+l;j-EPpL>Lp_EceD>W;{&kb`aQc5VL zl;pfHU0kV1DWTM?lu?rNbz7w(rG!#SDXrA3lu?okG(V-3Qd+55DWfD8>b6R0rDmm! zl3WySkx)u0rInhMGD>o>ZmX11N-H%hWt8NSaND?2ky1h_r6iZ?7D`1*38j=$TB%tn zqf~TRm|sFErIc1`R>~;Jig4SwQjt+Yq?Ax< zR>~;JKXqHBBBg{tdvnotPJx@DW#Q~l~T8a>C#HgN*N`&HB1**DpE=)rIgZ2 z%}N=iqT9m!5=t2*{?t}@Rh5dA5=tp0`Il~?RHT$pN-3q41Fslrl>4gl?f!q?AxfDW#Q~l`=~FOeJU;DHTEfGa#XqQc5c|D`k}Am2lg*Qjt;k>T&YMYp_EceD>W-+lw@s~Uy)KmDW#NFYF5f9$?IV*aixS(N-3?> ztdvpWkEw=F5~U)ggi=Z=t<q{ECzkN-3qZQnOM2rIj*D z@ozMpQd%ja6#rJ!DW#P%O7ZVBol;sUqZI#M(~;Fqnb`Bt&~xU$26T%S}CIx zFVu8OX{C%(oL^N13D`k}8{DwM6r<7L8D8>23Y>-YVt&~xU^SkOG zol;sUqZH?Nqd_{Qv{FVX&M)bLbV_NZj8dFmEd}Y6(n=YnIKN*C(kZ2tGD`8yG@Vjf zDWeqcrs~;Fx7Bn?X{GsM-(QLyKnUFe`3+HtWpA`UYCXg)bS1hAy^elB8y1S}jE19`s0N*h?m^F>50P{d{tFx; zyQ87#0JH?1jqXJm^fmI<;m-r3ozPG;0VUCiXcc+_y@|d;h3oR?^iUBx5FLlELwBPm z&|35rnz^3H$>>J(8tS<|=M~M_fb)X7ZOA8}=nS-FXO0E!j*dtFM0cVGP_&E4ey9Q+ zhR#Q~qWjVFXzPtcO3}e6g>FRmqLAE3^wLMT^n#=oa)MdJoB_q(Obr7?eQE&}ry8bT@hdy^DTEJvI{= ziR#eV=vMRv>fDV#?}+-L>1a8+1g%03qqos7XuZv;b7*fg71f|q(Y5Ff^e}oK{fTzk zLS!tOgPPE>=t6W0T7#ZJAEMt;*DXbcpfc2ePDgj5H_$I=ldb%}X}k~1X{ZjJfSy8M zqb;}QTB9Lo8mdF5pi9x6=n3>8;=>%-77aq>=y-H4x(cmE&!7*{4`{t@$rtrOqtQZi zJh~jML9e54QK#*=H_`s63^kzR&}HZ@^c4CJ+9FOF(Y|PZG#ed{u10sF=g=!?aChzn z^g3E+d+Hmy6?N@F@lh|d0G)@L(W~eOwBZgM8|saYM3 zkoyOX+l%{pZ;_i&Vi4DCAC3*h_9c8U?HO9SAJ=h+$Ze>2DCZp=SHw9UMx94@4i~w- zn0vHDq;drHawPjjJx5XJQO#)T3p#lW_w)WD*PuaTMfMyg@(DV9Jljm*`lHPza{Ori zB$4=J>Jj>Vipa}TX)jATr|8RRlwms8V+Q%7xidvRMhj<&j6Z;QboGI>nFrAh9n5`> z8V;fDm`xebngr*njN5PyZ4ByD&V5_KaiB3t+9l-Cn~mU6=|c0kk!&E_NoR>e-KDE+ zFPq42+{S%mGucPF$uQYmM#~nmzicUEWh?Nr%TO4)KITh3z3*=(7R9x_LE zkP6vR=1WhhlwN#Dx|7t&&eABm@cq`VvYgzHmfhue=`AP7o^m34I#c?}1=3$GkpXhG z43z6-FS$|nmX$Jy7a{w|YS~xrlELzC86tN}k=!H0$^17JrpgDD z=tG$9Sx0_?7*&HX2nB(Os zbD}(BPLdbR$?}ppRbDoy$=l|1`Oy4BJ~d~`H|8w)!JIAsG3Usy=3M#1oF~RRUkbbn zB;s+`HJy5+@NcULXS(GpbIy0m^~?R`mB~xp`q$I0bj!`Q@|Q0T@s}qrxz>eW*7Fv( z9C+wmZn??A``mJP^@DEtW%4n%98>eOTmJvO-*EroQhNHwbH<2ZS?n*T7WvC>C;Q9Q zz5L@GzLURvK8Sy_>;-pR3xe(2%P-t6%r7@x=Nof` zIVQLchaCEb+kcoY49`t}X7U}EuCn4Yx6IA|zuj)vpq%4^<%47Way~KJFV``1{AI6% zU#?H~^N;JApuB%9`qAzG%2B_$<%>(rO|~8mo9d?vkK>-;xL5azx%lBb`O6It^Yi_B z)VePG>0tTbSbzHkz5Hcmu)hz2>+;}O|M<_G;Kv^^Z&SB@?s{&%VSZu$503TE-v+^P zEt}>af9~}Rk0ZRUVLb`g*WbxMj@;{#n@?B|!~DW}7uKWjJcap%>7E+8ojbm8`!L;) z+xy2Kp2zir`kcF6nEv9X9bG;zH2Uqu3FH0k!~NeBvtzN_2MD|7v2Sg+4a?&-oSEB12B+8#sPGCbbg_%L7T>8A_tgK$4# zeF*aj_Y>ZC;r;dXD8HOf2g|S?gxiPrb9kP<9#!JX^>naY(97TdnxI~W;z!M}c|1^c-oc+Q6D+CInq^nd>x|JGgq zFrV=L2-m~&5Z)iT&-E}}_*@zi)Sm}~=gl2U{quCsB7YgC&wXBp=PhinbNc~D9prES z;8_3uxMG&S-YGZ_;q?ixL)bol8>E{Nqzm`+TX0?v3Hp)Y`M*C1@7}}D|H^~m&m}>>`lR9hdbrhV5Y3{)O#b*shHX>eHlQ z{(i#tENsWZe%n{Ub-E_FZ^LqieEw`bXD4_5!~OmD`TPC0@cceCw4ckTz5Rswhxc)A`P$q5 z;-*0^-xnJ9clG@L`+nw7xBtqDk!~6Gv%>3qX0mmB*uMW??N|P9`;$`-8t;yO$;hd0 zxoq()w|pj8Mi24VUp?4g?s0&>yke%m{5eQ>($4<+W&8TeCxc~Gu>3AqE(p>MUE-&k z5^TRBSau1PTLAs3izMLEK(HifqTp(6~a5>9<3ZS+Iw5UCn`T1ZTd{ z91O>BPYRidGtvq7WF2PXjI4`$yqhYAH^e<=?2>R7+>?!%oinmA?nzf>=!|TFd$K9B zbVfGAJ?X|wosrFPPqtvT&d8RyCtERNXJl*KlWmx_GqNr2Nq1)MjBJm4(u3JMBRk-p z?8pqBk)F6Gy_m%_vJ>vf&dlT)*#-AxS7!4J^NB~nyPM^3Z=Bl2%pSE1r*<*BNA1F? zUFHOMFPz%NOdquir*@fB;C*pw7qfoUF5F{A@(g$=?#Xaw0Qn2nxF;pd0vZ{CQv;a^ zqz2-ij5p`Q6L3!^nhW7cxF?g%#qbo|lj-JCcn0ptOtS)>g?n;oH1zG<-Sk$ra{V_)6T9Ys~ZT zwYVoYnit`la8GVFFT?-DJ!W)Yg;(L+k7g}=JMPIH<_&l??#Z3zE%+|nlYg6c;Ja~8 z?lbSgYjBSl;rHSDaZesFAHomfo;+keh9AZ~dE9&oKY@F^v;7=?3isq`^CkQY?#Z*} zYxp_bljqI1@C&%d4D7PPw?xwCvTWv;5Ttk-ZHD{@E^D*BfO2^k+>(Lysq$Qocix=3h$45GS=$`kHfhaye;4fIQN3L6+8*& zUhuYor{JDU^|r%Hz3%vQuLt2XaPA9lM|c*_ec|LP^A9ybA@&3FYJRkR@(i;FTz`2jSz2GX`lNxUjT#I{B=j{t0ihEM; z?FTpDo-}$x;U=7W${PkR#(Cm+#qd&`CyqA)UWW6;@kYT%;5>1>G4N41_m?*oJ{sr# z^2Wo*;@n@}MEH1|XN@-*J`wliWN#{b3eLUeO@mLvJvqah0sjN{j?cocqyB!Ygo3F8AiaSKyvp=~cp4;htRW zErhSZJ-ODahOfgtxxuT2Z^S*h$vYIj8TVwR*8tywd$P)Fg8zk6Z@tCv2e>ESc}wB% zaZi5rmchT_)I;wG_z&EZKfR;izi?i;6fB1gPVc4Q7`OoUBvNo39K}6}6`TMU;+}LW zI0;?{_hj9IQ{eS*Pu4Fu4c-9vWW$0p;Lf-wT?)>GH^M#HxZrHKEAGiA1?R$>;+||) za6a4(_hj>e3*jwrPqr+$7~Tr^Wb1-U;cal9Sp_TL-Ei9Kg3IALoVL2)O1!?{YP_M~ zTD-B~dc3LNM$#<8Jy~3EGrR<+Z&R=mJ`ATlFSr#x9H%`mScM;1a65if!D>8Ja2LM3 z;BNfrf_w2}3fADq7Tk{?SMVTyTfxKRunPC&{(?v02XI=sg2(Zv3Z5k7X`HsA;A!{= z+>^fwo`ogyEWCN-d3Xz)V~@NDZ-slZUF2mrj`OUKyb5oR^Q@1og?GSt)<@oed*VFn zBX7Yw;hd|;JMeBe&-ci?aBtk>+m`p?J#kO^L_UQ3;-2)2d<^%;JsA-B6ds6svRCAD zcyHX3L6I-veQ;0qjeHFc#y#0D@+~|B_he|~d$`Q1H@E_) zZH#OI&&6pQBU{1qaoWbnHt+(Renn(ExCW=LM!LgwICVAB1FpxZtC1byMx44D=>;#s zsjHEl;UzeAHL@#w7*1V{><%A}Q&%HS|;Fd@N2~jqC*< zkJC0r2Eixd^g|;1!YAXNoD$g&J{9-mw8&8SbewiFG7SC)PCFSXhR?!jCnF=^b8y

    `SoW8e#LPcDp%g)hQAxi~T&z6AH=(#S;kGTf6Dk;!lxr_GE^g|EPAGb7XB zt8m)P$PD-z+>`4gv)~(W`ZJLO;hS(zZiyTW-->frMrOmSaQZNjGI%vkA0|=`--XkM zi6r5>aZm1v%!BX6>CZ$e;Waq@naD!;ew;o`q#Ax0_vDdCE&M3%$zzd2;m2|MFp&oM z8Js>$qzQfwr{5A;48MfaZ;330U%@?jHL?tT4X57{IRbtYr{5Ae3Vs`>-x664XK?y0 zkz?TZaN7UKaqtH?{g%iH@Ta&ZpG8iBKgT`!B614+CGN>rk<;L>ah?~EGvM!WPkxA; z3IB-Ghl!jG|Ac$;bL3q37o2BG4mfRKbQQc4&Uhz!JG=`{dl+2}?}pPJM(=`q`yI&%F-6qg%8Df3P-<(8*rY&(I4R^oc><)CwMVVI~M%~J{+eV zi~a^5iStyA{sA9{Gh-0_3qAp7#vp3=j{GE?zFf2bJ_V;Q7mdQF;f$N2h42};Cuc?1 zfzQTii=ykn7vQu-(GB2>aN441XZRAFaZ_|7_;Q?aQ?x65CGN>p(M{p2apo(c-QeqS z`exBB;G1zz{u$j0UWwD@M7M!g;f$f8+rhWvv_H}A@M_$XyQ4kedvH(gjqV8FhkLRn z+6!*RX=kE4!w=)MGtph)M{(Mj=0?Cuz)$0zJQM8)KZ|?vTyy~Z zJkGpIbT9Zt+>@80gW#8OPhN@c3%`nc@>+C1crEV9>(Qa`8@MNLMu)*~;hwx5Er#F0 zJ;_8z!0+OoycZn>zmI$JL39lKA@0dX(XsHyIBisPJp3t68x^&GW9xIAHYz$9{u1~2 zc6KWKElwL1od$o8(?&&Sz(3-&QPElOPdIH<^g#F*oHipLFV%6|wICC|zT6lAuxtiFa z@Rm4pHL(VGYn-+#)&y^h({{xc!*QIpE4CEg9;fY!ErWN!>C45AfP3P!W3i*)op9Q& z*m8I`oVF`=4BQ*1?TQ@-?}^iP#ZG|x;b1ZCC6Rcpy&O6*~>y2dDoQI|Ck! z(|?Pd2@k>Pzs1gmi*WjHv2)?!IQ_TS`EUtN+ZDSI9)r_%#V&@&;`Gg8m%@{9`ev~e z@D!ZBS?qGS6sK<%yAqy`(>IG<4bQ}BuVUB22ja9#vFqV7oH0@CM)*dY`!04fd^65{ z7h4Ih#Ch(=ZiR2fxd&sb;8i&HVC;7IcAR@Kwi;fI(+7y%h2Iss8^1etFX8v#+>fy} z@O?PzsI>BW8cC*;@pq1@8O?t=2v4s!oT9ouf~3Yf5(|$jr{`ui8J;r z{0%lZW6#1r-~ybnXW?IP6ld&NXd;X~arza71@O8!_iSMlULR+?Sy%{n#u;N4u7h_i zT#t}VaPHQ^4e-qhJLBC7H^MhB?22zuxGBD6VK;oM!Y%Nv3%A0zDclC%ws1RqyTa~x zys!t}y>Lf-`@&v$kHVet9SV2FcP!i;?^(D9-m9=rBqFCXXTH5`U(knn^gZ$6)c;=m zqV>CV`|$Ostk*{_lt~+Q$ER%ALoSk1_#&AOUo11>i{$|L5;+LIL=J&3l>~gL%z-bH z3ivXa3$Kv*@CsP~r=zl* zlUxShENS>=xdQ&DTm}DAu7Ov|b?{2L0lr0Uf^U(3!nevT@U3zie4G3WzD@3cSIM35 zD)~43FS!T)m)r;6F3s@m@&J5?JOtk%kHD+tF?h8+0pBT4!FS3t@Llp8e3!fc|65*y z|1Gb;cgt(=-SRqokGu)rBX7g^N(R1H-h=Ox58(UcBY2H`0 ze)$f5Kz@K9kpI9B%FpnF@+)b;gkqG>V#NbDz6a1*G3qL07 z!;i^^@Z-`2eq1(&pO8)9CuB4DN!c8Jl3!u;;FmI6!%xY!@Y529pO)?6XJiNX8R-c> zD?7o@$}aG8vK#!I^oF08J>lo2FZ_b^hhLC^@QboH{G#jwza)dB;J0Ni{Ep0r-;o7yMylY9)WGjb9sI7;!|zEW{GKd=-zSS4^~^5t`erwH zebXD>!0ZWcVEV!vn*Q*HW+2?z>tvl){^t>2NnQ6YgdXfHyY>!JC^y;4Mr7-ong*w=@;- zmS!%zm6;E3Wfs6&n<{u~Qv+{f>fmimJ-n@Hgts+|;O)#3csp|#95;uE z-pO1B?`+cW&gKeu7jqT7i@65g)m#VfYHomcGdIDznSa8&n_J-B&24aR^Dnr!xdYzA z+zIbt{tfSG?t%9-_rZNkGu+2K0QWTy!F|mma6j`H+|N7#_cu?${mnD*0P`F?z`Ott zG%vve%`5O;<~4XP^E$k@c@y5-ybTXB8F-L+58lUo0PkZyg7-C_!26od;KAk#c(C~j z-p_mk?`OV)hnOGWA?82uQ1df9)cgt;ncv|e^Cvuv>EQ0Tw^0w?2u9%HCI%OqPH?eV z7cMdD!zE@zc!cQ!k1!j;q3SgW*YL2t3&o!IRB! zc#0{3rtAiA*K;N#4Lhmn2A-LW=0ymh);0E&q+-RPH8_hFtlX(tq zGB3c3%uDbh^9sD!yaq2euft2soA46zHoVki;HBn0_%QPUe3XlmzmFCe(=Y) z8~maS@uMofp5RwrXbD=4UPIe6tv?&xjP66Pq94#-Xe&CuC!n*@t>}I9HQJznUp1nm z&@Jd$^a&ao;a8LBH1s6eF3K;r&^{=IPCyrc|lw6-*zM=0C zAF{}Xs6RReJ%C<8Z=>&#@N3Zx(N3rc)uJ2GeduBIJbD{_gnmI$enGl18inSdGtp(} z8uTK11AT+GG#;@VfvduX^ z=tA@YdL4a(I`iwztLPjvjoFzzQ1@Nf7usf5&ME4Tjz{OBtI<2?BlHzI zU^jjZik6{I(9dX{-Kmr4GcMc=nNXA z^HJaZIBrxml=F{{LvNuk(Vu9`VVnc>FnSY>Ev8&(bP4Si+I|Fe5B-c{BRMDNS5!EP zcvOp0X#LUrk{0cbu0^ZSV`#t_t{<9?R-rZMDfG}dju|Z;Pnpo8=vDLy+Is@`1)7Zh zLK{qkC$T^DJL)=_vQHIRx0GM0qNV6KbQbyy{fgF`M!BYQ4p6@tBE!&%nfwwLHKQ*4 z0(EP&GkWs?{!##1exS$&Xv%Er6k3QLL@%Nb(1bFM0}YwOJ%whVhs)U>^_ok&h(@DG zifb(XKfAR5O__DMC%qudE*>Uq7p{-}mmU5L;S)IT_FsX&aBjm>BmDrHTmAPc;g3>w z`!C$5Wt)EMgDkbp=Wfo0{g<2GtI8i<667Clb6A3VpHg3h?3Y-VAo~^8WypSkl}4AN zE6|l3#Z~BPbPc)|U5BnmH=rBQP3UI6ko+fFiEcr+qTA3a^e=Qfx&y67ck)oX3;i42 zjqXABqWjPq)Qs*&51C-gJ=1^tSCL%-7l`2+ol{<6IhGnkR(U`CXK8A%Ri1UZOxQgo7Cg?#BplKSqB0G2+{gk=}mN1#N^jMqSY+Xj8Nq>V`H)Tc9n?5JqA{7=aC8 z8k~aA(r9ok@>&COz4i^k8SwbDc$xbrwCZavFnv)q^Gs`9T!5oX_<@i{+7@x;Zf5!W7HlN_L&0lzf8M+?NabwTftn()bTg5xXjGrZgJ3%#fCW%7pO z@9;;xZ8oDn?G@p#dZ*#g?_EfgQ3&@M{+HJmZ}7%DpO3Foa5=tAZgIW_?^^IPzD>c1E$p!zgm*2d#h1yE zcxQ9A3%|jI+~xc+e4B!IT=;*SZ?L6EkAl7NoeK`cCrh;pIT7zy@G`z%!G^R@{CA-6 zeg*yU25+MC1^AWTa_1M|#Rd1{qY6I7#}{luFKn{(biOw}s$e4C;4Q$HddIo&^YNp+ z+Z;cHk1u!!Z}5J_XB6~f3{_T;!k5Vz&M(7f6x@nm={<(u?7ic{zrt60QN~!yWD~rs zU|0M~Z#X`$Ac;44Dd!jChZekqU+I1B+}qBk*#ci&P~!MNob%xPDEuwC0AF0N3O}^q z5qx<;*SO`L_%a#byaexTX5q^V>hNogtq&{Beeg>2kn<<-C(Wmh|G?Lpe%)=zY4}=m zvvXc#ac9|-D@|YcNmGQcHOD$%i~nTabNqwjKOB$iVbhf1Pnv7+QQp7tmBzXW_$$ZO zM|r;6G8oSa!QYJ(>}Giryj%2C$5-GxN4MPF zhVO}gAK4Ed5WU;^L(X5omq$LtS4F1xwm#c=wezLUk9PhK=a)FY+W9KHIJ(mw*84ag ziZ72$!6!$bcK(X<4_x?f`0VJBds;ui`MLP=$W3^0^a1BjI$w)dM<@5Oet`4&`0~h+ z_~htc&O7zBycs?_y1nyVoe#p7M^D3}(aW6Q==@In?C1vlgzs>U##cvw!_SU(>Ca3+ z^ho^b=vnyc=(YIE(H#d^@9lgrzC1D!pB;U|`HRlqb>Uw+?ljQGZsdGB{KsemzB+oW z^9ykk+k7wU-JS1&FOS$KPUqO&aOc=V&R=lhpW&+_bN9Ah>--4Z#7=U4mh&{eCbH!q z>ph(J!B<80b3W2}DgJci8RxG$|Imeh>-<;eo%XSNKic^z&M(A!#D2gB#17rpp2-vN z9r_^{Y? z=d+zxX0kb^fdKPQz^3HgUc^erD_n=QldP%Y{FW(>@HhKGXSJ{Fqq1 z^JUIYa^dGXzs&hf_=?z0#n$^cABr!J%)q(I&X+hp-uYS1FLr)CesgTc66?L455|{A zO7T^ZD(6kkkHPPb{pGyV2+Nz{%Okz3Hi0J70(|j~s<33xB~E7alT!vK7AR z{6pv8@G}d0PqMz3^AY&+$SizC;acbKIse9mcbaU^ z`9GXr==@sz%)(X9?{WSFzAEyH^LLzoiC0JGO|f3*{78Ix}=?|1$x{(j-X)2+{S-iR-coQi*2 z*ky+GEu8nlmq+%+S4D1dewXt{@%IahXIdZU`~W=K>3O_cr-8F+_s9;maeZ;j1F+9b|nI z=i58)?R+oiBk&%bCObdC`Fwmu>;vatI{yv7Ikxy<>nZ1_95{?3Qv%OkcIw<7i|ydw6R^N*Z==lnP4 z>&)R!>{Nl9!bQ$c#mhTwSZ=+W^BwVHI$h!XM(20o%OlU@<()ot{+)BFu;-!P`7-Ax zIX~C=WzKKHtD`-W*7tC}AAU@yyPQAZ{5gDar#JEQJI$JFxfYK`mpeZle>{3IetxHw zIR6GutE(t$OpZ-1Ev`>iBx@Qg%c>e?R5s2Z-Pl++KH1PvHZR#QtYK+Q`H+g)v-|8R zgU3}iH2x2gk4iR5vOiyUDhSE`S~$JNHfr-@e7@I z&wg$>r=ow~e5YbS-q8O2@}=$DKVNA7yrBd9P)gfpfZb|jWmRLcep&-p*dB}@n0s>a zhYoNV4hv%%rY0NRX%B<@>}APTEW1~~zPeqzaC;v6>}^wUt|!h}kSuR( z7{1hpF%>SIi?!+c4GPjxLvk*PAJwL8ZiC!V7dRzZUArimeQ}2`<^J<`NooA}Ry%5) zz(0|>m))II|6sE3IeQ#_XjbL6H;|u8xYe+V3U~9he{1#e&*UU-sl~PR64XJMl7kTr;Ek*wm`+T zRaHDx{55w-Hre=OX)I z+>4U+JU`hYD@{p~vzYz#y!+s*>ww6WMdma$-qYW7*`UWc^ZB zil^={c*x$fXIIsh)03o1lq9Q?jmh@g$i87s`HM}dPs7w19<-$w_6E^@+YRrliu< zk220QN!v8tefs^c&JkPvkIzxC&42skB{^p(`$5+J*$T4m_{rLSnOhnI(&W32trFM+ zZ+#H0qA7HCBb^)9YTahl>M3Y1hu?_0s;!CpYQgeU%T}pumi{28RmL`h*_AbmxW#O9 zL06EvLzw^Uas~Du3T+x>Es=jIbZ3Nfs2w!CBnS&r5hTmmID6G5&0f!&cdJ7pe_QkW zNoi9Z?K7+Yi<`ZFxK-;b+J04IgYc+28b=1nI;_XtWnj6Y5xp5Wm&bbJ%A<{;Fid!)BoU!z7VC%sjQN!)4x9cw$qZI!0udz*Oi2R5j7V=a;_^Oqs!_m+JD=x9eW^9#vmfH^29k;lql1PiG#4w!ROO7k&5aGic9# zegDhkG&uEsV?(E~k)E5ao0RHrY6>a*v*K67c25iG@?L_DHV98hcsV*sOXeL#cUW86 zD_e(`!QZI;hN9il^x4b5)E(w-6a5!WV31Xwnx>6OxVzTRx>nJgyX-Dkt2le&THOXV zKQ_qj?zD>Un{{}alMSSL`Hfyy{USK0?IR>-a7ai_yQf>VdyaLRj#9L=s2!!!7Pg~A z9o0U{LUjJdr=vV`Yk!CJ#ovjZZ&uq}I6q15b!)c-efDn2qoYLgl8v*cm5wB}y}(UX zuH9fQxx_XgfPaD8&4Ltv)5MU%uK*q8(a{wkgYay0ltp;L|E~QV6dqHDx1FYH@5UoR z%O3U0@lAvlwoPEZK0fJ(Apdj&Id=~sId=~slgb*)=WFh|QM)HcGwCRW%e12e_Gnw5 zjE+)wbU`VP&8(x%+wLs;c*#6_)h5nfA75M1RFxbeWi2mm#*~Py>7~hDEVE0OVe63ER`JZWW@YGi zJtoyIPS#JIpRB6t?N9hLguRhDW#uw;X+vYOx_8Tz6|w#lnk+2016AtiL`bSw?nK8+n~J&kt$26+~P5Fs*%|lGVGm30g+z z6v)PB1#mc7ePKTny*63zfc$C7j*mWX)eg@={>Tp6+29=I->&7H<&SSUhxy~%zwcYl zX#Oq#w&SR0yrb>i7092U^%ZG1P1|R4{-pjH&eQ7WPi|Y4|2nas_kYnmO52t#|L!^X z>|R~FiL!eH`4iba`j4KD<2&r9+xp)A=J{jt-aYO1gX|u%52pQuEeG`XX~Ki*IA!~> z?N%DUfoP|a_>uW4MayQbD~q-_*%w^{v(HOQ4*o@Ly&fK~ZtBCN`r2~dLD;tz!JJgf zW}39^jbzV@MrRkIC8G7kXvx(UE-Xyz)Gcdusm=@qX|vbs!jCnAe6!vh2B}+zP;Cjw ze*CwNFU#tM_=jXqz?iIgU71o_l`Kilt*oi^Cwkq1lS|9~g0h51-xAk4Bs?X4JSA)Y z0d0FnL9Xt?2Kx$mp8bv|i1({xkU&?e-S<90l3^8ddG@=@7@$4P;YsnkChlVj64|32 zQ(>D7*RdK_6I2r$mDTgojkWuwAz?CCSeuc?4C6i9yqcEPmUFLR9C!G_G&@YWL9eCw z$4ZaP?!)a&Q~6QhYTI~s{=#S>i;4BR)>K!MwdS8kjjXj_JL#IOT%6kM^=!_)ye(g< z*w)lfnbmcX+VC3Kt3xGmElAKQ4z6BqAg8N!D!ZxQR}3z=u9Ul1hCyi1%&=xRaNS1U ziu!3=;%q0ly*RrajbxCYPjsN|x%O8$fbdHC^{Gv8c&=Ku2|fawK)1OiFe@W}iYwX9aQpgq{}WtCMUYV4b5 zKV|lMbyl2BJEkE!Wy@NnhTBxb%FAn;Y8tbX<^+|sPGL8ink;XsuWVeJy;a+=)@j_% z>gw#R?cajcOhMYqT*=Atn}v2`sbTGG=iY!%t7#~ko1DnY?rPo{HIkiw{JHBTN&BhY z#G0z5!6e-c+EQCIWXx9km+s+lIC=?7LNy*EU7iQi_e$HC(qw&g!^FA4)2(g%RG#r;YKApc@QDhaRJ5tk zQ{D7U+wkJriae=D*H-iC#k_W6>hi|SSiIP7mOpZu{hYe(-h=O~+eUDGl68&a%4+5{ z<=rqmQFP+xRx+{G=6LPXtZk@$bE$V|{v`g1%pW(Za#6A-f7GO=IaQSn^ON=YqqCl| zZA(R6>Nvily3&5w)W8Fz!-V$m{+o36u9;9-zOW|mNt)VJ-%dnhS$$(^Wxf;32VIr* zOY_IM&T8AEE?rue=L+R^-}0xjk26k2@CkbUH1=fVkMWzi{BgnQ%OB|;B#n8?O(X5T zgKK-76U!)U-{8SNskVVWKzm6?)Ku_AS-!Jk&wTzU_nB1Ny%zHkTsu+R*gQqsZsHeo zSXEW+;%W6&OoGiHZ)er>rk$EBt1qALPdm2FX?$7z!enFK4TqOCB&XF^w%x{#0Bw^q zuCiuf{@DC6BO2^&!KZy~H?q~dZ79dqHgIZLbrl~Rx>@7A3Ajhc)y}KU8#ki9zP3JZ zjNPQEF>jPR&!g<8Fb#f_)3#7!DoSe?CTrS8*wVHWWgE_hhIS&gkt(UB^PDH+k+sb6 z7tg2JrTO>2U$@tV!^oFBG~Z*E*H_lrv3=XfVcG3nM+vjr zyN=Si_eJc=woeVb9;j=(&*CN~JFD68TT$H%sfm3dS7y^ws{+uxAX&_!RA zv`?fwDRNud_L8}dMLUtUnaq>5tJ}%oJDzsZl$OoQvn7RcU+KEB1wT`g0-D)Ys=VS_(JXqaDF*IqKerO1>2h$VbdV?WHv6X!okCedZB zbRT)=Nz!2?jqTsXhqD}cvi9E&SCB~uiTEhpb|Px)`ELAgl8&um0?HrWbe!kJ`guIt zc@^irRnAi~Iv4(3ohQy+k38YFt;rMYZZTUy8yS-~&70p&G95d*$3oj?CY+D>yL5ir zmaiO(c*xrMnbO*c^vUY|@p`_5t^|D7RnwR!){c?pmf3GD+Vtcn+UwM}r9QYU+9vbc zR{!zWP7?nbw%yb{7R%dxfd-2vp>%#z^&C5Gp67sqd6>54 z2<8CWMvSYinKz}W#^$ZROPG>u^gG;iFxqaB)t4K?98qO?W#dTtb!`(e8d_9VzO-$` z@Y;$zp*iDXJGIni)6)9NYI?FVvJ$fsQ{%a=l}uE%X$tL}V%C6WBolM3x5&QV{x-3H z2mNg_ccU!2u z_>;2vV#3~oEt$qo)rt33!CB|5Re0_R_Va9&B&#fWV(WrVA2Yf9F1S4D4zl&sgFDom zAi5e^lN0`AWQ{#(K@NTgH=LYsIphYln!a#3_%jxMVmEoAuR>h3ow#t34%{SdV_9QU zgIl#P^`^G0mfN&8NjR_JHq@0c#!g*mj9alWS@Rk$GJAb-%bbVI4<!))I#2%!{iBl|H> zOOU@&>oB`fR>+u|x+XSdNA|eGTO*kGaR;6o7S`f0jomJIyo5pA26p<+Woi4iE*}T} z`_|z+r^@GN1u!yN=vHlJwh3u9jpR0O8`{(+o!#26`nuPw)$l27@7SzhecP867AAF# zUQYT3?XtV$(^)H5%9gcx;cS*vxZ$8Hkv%Id?_IM_04+kTo&X(4>QS@~smq=XbA`xi zvRpB;*Ms)5RZv}4L*+M`t)sJ>%j_6eTUuJS?5I)U>%ZWOw46Ugkdu`Chx@RVF(=ku z>-M6vN}j!yz4Sz72iXTsPEc9v6n+Oi`*myf_I_+w4qFRcb;wTQ_L@DO_W$C8Ubj|b z?X0-6cDAwk*@JI8&8YW4o+x`G5OQBO2Hy<^?V^lvUx3)h zQF45loli^h5nyAhb)J+~1$r?`?RxHSnQlb#-k`@7BlOd)OR?d1d}Ek0kXx z1i9{ZX)i-D{at<|?RFM&eefAaxZbkEwl&884NO*Sf z*6rDMU<*b*Zj#!SOjjnA)i)${joxjN2ZOHX|G9VmAA7r__lF*N=DYoqZ>vnc*>I_C zH^w#&wH$D1{Zdy}x0_(D++`Ya(w{$f@!Vhjl(|chwWi_j9W?h{@a=8zNvVurh+bPi zoHyOBC*pEtBvqJ4n?3#R6seKyHUsouz zP2Xrf1y9!dfi~gjvWAuweIMkuY*`EXUM&Gx4T#_G${XdMt=t5yhpR0cW4B<**_CN^J_m{=ZDBln!CRRArtJBs{N}FS)a@kUy)ogac{o5>@^ldGx03l@(zz{Zgj@&bfZ7^=;AM+%cW(axh^q~5>=lOU8;EhW zwRNpxY(|WEn3dMx;QR#jHvC#nOxEe_h-|@ zJrI1fIon4hZwTD>A@IRCBJ!*kp^G&sGj19M8+Ix?rE?MAkgv~`m3ROSmM z@7BTP`Z=eojQYym)y9@JCaL^a@j*4rZQX+&R-549gVLPtESb0N--?}2cYiZbMjYBy zRuwkb_6bUJSJTLk+>%v6Ls41f3TKCk;yx~RWCx29Jo0EmTi?pIa^?j3XU~7k*{I?& zEca>9;Sa`oSGdh;YHAyYCv79_%15K`if5Ph-p%>^z{Rx*YyF7=&ob>LxwnQcBQ9O= znS#qBYqhK;#_lovX2B)X6<%eyFBx23`tgEG)3R0-e$*gM6yJ{O!e4~Y`*G`j<#N5D z;37$@*O572_xtbO{qozdPqM#?@DHO+DAyq;U46@=*yR*_JmIzvxzc}4t9!j8t$J-b3ca-)g)ff)@0Yj>_)OpWXt{Bdi$Kr zxqsViYV*w(-jb!p+QZTrJ^vN3JG9&|o#zYE*zI`yw)+i<%cR2u)amxO-oKVJ)!v(1 z9g_GJNxx0;uSv@)LwWa|^6=VP+soj-pwsOCjS2mRIb0v(`g>Dp*m!scV{h9AFbhO| z3j*!mc+CoM)t-;Cv%~CU1+POIvyu(3tl_U&Wd-EE=WO>tTV90*?JReB_@=wvjlv(8 zW+nCS((H}>hB!N9l=~%*=FZ7d&TR&@Q*5Ell!?12tv(8J*QIrcd%Y2UG-QYSyu+}y zmWOQc+_aY==!g1!Zu?PvZ+l7o?0X<4`Tk?U}^1P!a7_y4f>{((_mRsQguBtU==$N(*Ep`EtW(iXz-qitGg3ndg{ z1EeIhw5BZ~GmzLxGM$+eXlb39%phIqnkrg!sp4*2tF}rNSL|CA6{?qa zb{#JBP$FktDYjc20wCU&X46HnXNMac%m1-lO0mv(`KW|zX&m}m^fYMj+=mZ{yb z`)uFAC8w;p18uZ9cBYMb!biJZYGcqOMGK%jO%%R7dW2kvtpV0SQYx7@3`Z^t%|w9b zKn{d8M<6thg`)v~4=$c#2gbJXgHhr9YOESDnXgg)BR-`qtcA5Y>GMeDPOay^RS{ z#wPf+&P~#5#283!W$2n1Vw*l!Dxm#DL}@Y{-k8K?33`zyY(IfjB>f-_3A14NNe?Ag zdG2wU`W_iMO%BZ}wGLJnuyu=Ep3+oQ@rX~Q>iJYEj8ADk(*;j`!zIhjQL)_ddIHvg zL<6Sr1S_qs5ScCez}P0DOg#CQZ3$>}CcuE1WL zD)BW3erKqv*eIcvK@TzPRdv}?bK%$(jf-|CgqrHsHhVQiV~Gp?m|^k$WJY9`X%KqJYt~b4 z=T)!wBy!%uFL#2yHWB0G#=RSO_ZSN!FG}c?rzOv;Fho?{W@nB=t-T@<^TBGxktZBz zn)Q+kvj(c8C@3=nvw=j3Rf$nwhAz)Q+0~Ze#R>QdGU$_yzKgrxQHkc+_#vCQ5a^TU7q! z*~`5Zg^AFa@Pw3!uJv4#^fiVM!q!tFIuW8JT(!OJCB-Z+c-k9V$`bgF5VKZZ{WNPx zi)NX_f&Ji#&P&`N7H2VPG!X$n>uoQ|nWKUYDOXi&ki2qsK48Ku<=e!R=<~N? z+Yy^x9*?as);v$DFemxi9`b&=1s_5%)?T*mtq&yF?$d0{F=s3@4dFRJb46x0yNz1Z zxola~<(M$4NILF^MGUlEP_4ZCBPS0xc5es?w%XL=#g4nZa=N+G_dT%LPM52T!FQC*m$fvDI!_QY*zIBcXJzSSqnsmE@(Q8HGAs?tIajp!iJE zSIrWY4a;ZBzv^kOcYLblT`7{1J~y`$be-J&&?SN}&&er6BW9J_VbE1=d^371&dlqDkl z;R!{fnOmGGh8mE1pQRhtWza@54JdyrT9lJ9xb*m*9x=6-pvVz!HC`sI z&uRYCl+rJ+lTp?C$v-)b^0c+&sVBmc2TnCqkTsqd6!Jo)rOu`jr4ftz4?v?S&%6=8?0(IvT0!@ zPO7aDF|jp4tQ&sR-h6CCJ%7DV@ZRm3m3Y?@cHCvDp;4E3^U*?0w==00$W1=f!+Vto z0uSnk1L=!QNO9T|IKiP2n@W-J>X>?Jh8V)`O}9~VM|%u5VF8c=t!Fsd1ng3~ezp@k z_qo#=7Kz)X^&NRuRv`tV8bRIy(`Q6cK5VLXvQ>fVJ+lC5(O&rhn{&?dqYR&08{%j9 z4P&JpVZOM_Xk-S=ebp&3#MjN$6QrGUs;pqGJB9(QRn(f8Rr%95{hbJg$?>#uTj1z+RfPAWy>PWqhQKdsN3 zy2!Ij{I1n1#WHx!+OBY%Zd=e`6fSvxAh$`Gt2KiO3{JByW> zl07kzEdZkjSpdY%pUKcha*Zt1!JgY@#S99x64yfM?ojf=(k+@-J#>qiEpeR=+VbW9 zR$8oMxCO%}dQ+CjI4%tGI8+#bqoZquqE-ENbE90lbK5cfI3%j&y}g zEa}`T>05n-kgupS`kC7z$d+9D1}rz zZfpj0T!;m2fKG@g&TkfT@!uxEwV>Q4s>NpX>_nd~oW)V@L~r08GY{uC2r-^$%>ji* z;k&RFuyOQ@p!Zg>3dasWiy3tW&5g_-E*mpXpgwUq&bmZ5`VpL{T8Ta#Vgru2j7l|Q z2sR?bMJs`^9cQa>Y!wfIvZ65lZk*v3Mxs{LfO90C;I|9?(0}|A;8xf#bGJ4yb>b>Q zy{}x0oXqMj5*`o~kRvBNn|YATu%Q3h_AT&`6}*L@7pAdM*CC@wZ8ccoU=< z76IU*(LMsKq=yh{h{{IhwFA8qD0iVIfVM6`#BtV%vjl#rJ&NB1$^o1c)DlsPV;AK0 zE{DjBUIB0I6Y>_?CM&;lO_`Q z!@Ed9gX}2>ZelIQO!6S zk>N>0tvJiI1HfF=h}KP@Ogz@%S6hu3ug{1lng=uv*1(l5%n{k7tXT}+sv+-cu@Gl9 zVu28;S6aa+DK9Lx;4gs5*ovdOYc*;KE`R~Lr*1nByBmWdC=$|K2;)%@C&F`qOP|lN zSeb*`D26l#tdde&@jDk7B5YW5frF+L4JC$p4MS$(RE+65V#*lif=?1d3$RPqKw_KA zv|G?d22!m?GY2q4yA9AWKnGBsgULd4wd!sGSGHIs1dVJXn+;6>do<3TG?m;GXv877 zk~msu5=KxWYPY~(Zx+plD{KZ;TXM3O>=Q#@=@y%TCx#I;!yVR&J5ln%`RHC^f++yR7&TbMnqO_6EH-eiDsB49Z1aTI|c^Gi5XkQ4Z7C_ga?FO_8 zpSZ^4Q5%{q53M=yHP&)xGu8kjb`se_$mEv*JN?ph5u>CFehm2G;@-WIHBK&!dTfNW zs}1X_hSbR7Xq*%@C}8Lsa%$DWb{5rQjkq0sm!eiWVX{1OJLD#)r<*TubDOtAxCeb` zvddQDnA`(lp((x$bBQKD9NL|Q`+EnlJhuc1+s7NejfogO(Vs-^i&&QaEi8MaPx`-t0Y$Eu|~Bq?2YC+Ka3 zmPuC5)I*L$hHeU3;;xn8E5e+Sryxu8cK?MrxdXE9X8RM%+!*cA#6{6q-s#3Nn2v^k zd#M|@9YBia?|OGqQL`;j8STUz@@V9@$cNg=6Zu<;)iO2HQBhoz54s8Sh>|h#gmoCL zxRO#XN^B|7lCe~Jf+ozHhZtH+Fg=neoh!uL$I#!2>2b~`yl1GG>IE+@Yhm7VW4eql zzS7%}s=iH#u?=E1VrY{PbG9J5c0dZ08Q4;gxy!?rFP#I4goF?HW$YraH-|^pi5T9E z5mPeiyN&4QCX{oLJX1XD6mLh4(5mu}IC>M2GM@#-PXMD@o0%r^I0P>D{AwXD& zS6Z;pGN>IHhisKg4#Gr{pT?Xz8ojVEJvh(^sn}omzgqC zv=tL-fkUV5;+3%W*vhcxPW27o3(?Z5{Yu z32415u^R3mA6}Y3Ik1;(!UU5mZ?{Q{8RYbB%=S8-C)P!4xRrJc@NydiGOyBXQgUY5 zWjAT^-!s`?kmv~7WJUHiYjXRG%O2wulK0Rc(90il;Pk*Sc?oPfmZy1}uMzjWgzU7ETACKz)rl(=cQ_=V!! z}lF(9IMl< z$U>a@!#J0Ck2JL+ z!x21}SJ0<}l4p4y8?k$nZ1eYr=Y(f1*gnAwm*Sqmxb@cMpfhi( z4yUWJdqJU*_TfakH?@(-@8-g18I-DIbg-$5JoYd$w4Kq=!O10d$(*;W?F-EyZSb0W z=3ELYKeJNVT8wUXrE%pS4%#pA7AG$s-!7e3BO5~@$3vna7rKPgeil@o4E+p^pnvpX?$Tc5N@Js;sf*A5>~{#h@& z&jr>&eMz2Fx(iw=?g|{_F?Iv=7@{qRJW1qGuzAlSalf~82KPPQ_*{YNa<`WVIg$d5 z@p^Cilz!T{a(Z1e7+%X02_X($)wi&0^*yy;x%1|$n~q!@6{P{;D+~C1<)d(@no6gY zqo?|p`23To#$U(B$Hz?dC%?mW!k>I)R6zJsGXU1^n=J6tjUPauQ>wgNLZ*PQ#8+84 zn$V{1pE#zZDjk|y74}W_ul4zx#@VOkScjk<7=k{ZZ_=e=)Hokt%L8Jn|1MNdrmk%o zo@n};DxF2{(Kem{Bh=!5c(nZCh6odn>Ms5!u8lHy!hlOmAp~1A91Y8#Oipx_x$_q8 zyv^vmjXNiuz`d@{z1%s;oij$~43BY#-I>P7usaC0WolLO%cy~*@50YmNQNp%=CYwI zASMgOx|6X2lB6I}?4;pK6jFHO2#q`)&j{o>OQ~1#K=hT0ELM8Q5T2^!SD<|y%Sl+f zs*>Ltg)J2vNol*tFp^(qPIenC>}KFS8f?!bgCiF5c*zoO$I(oYrTxP-7h&^>+^@~`4(cS?PnbwAOQcvTyubHUN&l8 z=9+^>%|S+c$U@s-qitX$huDx0YXCN^2IpjzfQK3Ihy$?R30Th6~CY zIjQaBBo|NV;wdhk*2U8Xfd)ySK@n(R0%sUAnuvg8_Y6tFn8Ogfp2H2s9ByD?4NylZ zdV3B_JOeH~^){Y*15Z8UdDFrJFpW|Q=}l(zErY|iDh&>yjj?)0SE4VR6|0C~df>c> zJ%-U|B*h*UI_}u4J2o@a zdK*egWIaQLG*pP8+6;ymR~uJHWHqU}&ro|GgG5-6Q4J!8(C1RS1dTGbga!pR#*kp; zY@upp4VaIKoxpR`qXY2-&ro@{u_1LHM*r)Z_#{%8KG?Hj#J<5(d zh)=_1(Wtf0O7@w0~qS-l$2K@8z)xE z(eaB&#VgBkD6d2&U0Gf}Y7BKjs)w9hlmHhJFMo=%F@NgoV}rhuOL1~NfbsJ!20k%< zk`GKuRxwn6@-!b$@$neOn!2T=vV;=#>C^m^d?h6klZUOQD}<`lcgjTxO8&aaa#W;VsY?B5Jk`ABPkqmydKI!nRszm^ zB}h}Lfgp6Z*QfjIxZ5wQQolC3{c@rx^{3vDC}!ZN3LFB{?=U2kP;=AxahUBG1DGkn zXqc->oEZU%TPBN=u>z+Z&<_~_xgIq9QG1CA3{|Oo2Bl9(sgir9Lq8VSWJr(%ML^(x zJnUG~geay>QbGeb83Z?7DlYYvk0Y)C5r8H1?Bld8c?wmw@YER?M@pAG1yw`RQ2LBg zl0q7Sgz&z1*_bi@p8c4P$|?AJ4#`yAuP zw3g$?j4Z86K1oB8qCpsBCQnR+MbW9YD&!ADq28Z7F$N>1-?6L!S`t=`DO25;_j=ec zmC4G>#|5Cv`vFv5J`OlRnZ-9|l)vYoKY5Ib`0@7~!YEm9Clm|E#%ZNDl)$i{b7Vl4 zMjL2!N>_fQRXiTbmWay+U?eW-*XUDk_MwrI4b;QtAp#h7N#!J*l#cOLUNi>$Q=*;h zRliC9I)C!0AGwnh^hq?apy`C!rsW6g;5b4HH_-_b3|bQIfaPE zGS#1+KpbGbLDK*QXiQc1R*ot4_Z(#%G(k<4Vw#jzg!xTHopE1*4sd{flR#B~f0OaQr8@&Z<9v$%Gr|VU2%?fviS=5T5CUt;+?(Js zbnsQT7=hw}c@IkJByepFe9l}1DTm1{R5?s$A(O2! z$<;8#A`P*KaGKP~+o-*rl(pHx+GXmCZR&u;FiaUNX56(JcP$rJ=%OPnX9X)#e69z| z1twK5(JM$M#pgUwPRlboEzdNV!yqVfQ#1@dH*xnfZcgA;s~QGFGVUhkd!6QcouSz@ zZBjzBX}B=fY+A60n_0xvN}5%M#3_Gfy)7l4U77XFLCCHqH(!7rcLw~zW{q16QdL=RiY1xKE)@vv%wM$LK zU3x0+VnOU81mHwXMcHu|h2&0eEsFQe(R(L@Y15k}L;(tS>YNJT~r>5?KO=yMGEyc1NK)bmVepKj7U_Ay8M zsao01ep=RL4roA{7`)!e9AM-x+YRgqn8lYF%RvLnL9RJu)EwgOhn?Le+lRU7h_gwu zeT18idNmz2Rl7r}c86B&4pwbHGmt_nt61u#pN;yMHtJ(sJg$q!O|%h(Hloo+80`s( z4y}w*xqzwdy~7qrMtdG#jM_b&kE|4EwelEFtcS`4S8thnX_y;S7VgUYL4#N zNwQie3kO}sdytGMJBcw&(V+g+L1QXN5Z+SDP9qR$t=Va0AKB@;lN6@}=J0On1Nf|P zcF@$vL8cs#NJs~oGM_VZ0n;iDDyulCt>PfHW@j>ADYO!QDapl57V0b|R*)BzDQ@K4x^kyLvxYAJ7~C8S~5mH2boyW}ed(&iSH1 zUuFykHK@kGQ8jyrs?{_)#HM@Ls5wmWJ9|WTwc>Y{LuvM?-GFf@avVyt{ftFb^%Dn% zNs~RzSaWnCf9eeWM=cre8S;Lz&fZK-?UlQ!v?G~r05*TR znUCxExPt4~(N1M{z@J{n`v9o{+5phIMyUa{J;vSvv!1pC)Yd?1z}yc@!4dFY5P4GG z9RQ~EI@(L&6WZC!zQvmq>2;{GiK#OT1lu?1b+m=IT|jlpfc)FBFNS@ObOjjmZ!cGH z%@&X83dJMqkhYHinr;ucqz3ply1<2>4gM&FmwWuNp2g| z%*2fx*cRFjx+_>8=@tI%lfW;_xk0hK!eTiU(PBm7WD7K6a+g9qi^9Vv;YUAa{6C3+7og&ifn=)K>c+Tu?yhGZ1dG&ZAn$BR#hUtUnM80!&kSd4VS zP5b3gQu?=FZ>^>FTW2)2SURcw@~2;ozgCZ9zdv2e_ z<$f9%Qz!kjskME&v?5$SFpM{7K+pxHan!kqfiwKicT)oJ8Y&hk=;ItNdtXW zVsJD^A~fHy?8TLh^yTtO4gXeF`cwC|jk&Pg4>E{4xGe}1uCgkbn(Du|q;fi4dB)up zz=xBkXagUuIDJ~3RwX}NmHePT`7G)_fu$q;ew=>&5d!-J1Am;Z3w;V#UP=Y7hzKzb zn}UR#_@I<*f++Jw8NQn2PrgbQPb#sckA1>Q+!0aVtTQXcJ=8>@3Y(wvxE!d0zMWkuEtR4W*N)7m_7j+QWcAT!nhKB zYU6x%3|)b{3rku)(j7BU3H?An<5iDJz~ibME`foI*XTZ*h};c$QR(8@O2y&}P#>9! zl>3YF=UJA*z2#t&G*n3ln!tP-?z^cRxi>5=`2utcP0JoHbc~s%%#PTalIXBzJv+T*(i+uBkBO$fW@w9pp)CeOTOer?KN6Q@lGkLo zB#cwIMpgjVYc$&&Xto(>wzb1v(y=8k`bj6FUGvh#$G0s?s|b0#8j0L~W;!l6{pXRJs(9V={1V zBcE3ub8vgi;P#l7?{NpnaRcNy2h)&rd6qBsV|P}E%n&@V9ZW+;Fy(UyZnqf0yum@gp(=gG3g(PlPGO6HRn)Nt zc?}VQc^SdH!4=H8tOE`8$O$4KJYW&7m$m}HdM9Bj8iaA#Ndl zx<&9-P{n_YN*S%e2PTuj21?)p>wi6bo@+Lns;GHDak4AMR^le`9JU&8Pk2sceN|66 zJO72O_VePVdMeB*&{JVgfu0KK{Oig2*DL2=&$&GF$EGrJJSKnVu|1*YY0o4FlamZ4 zC()Ks@^^9pD}PdBxs;lqdrxuno?`T#!n2I+(Xd56RkMt2(4OUR(pvR&f1FOy{PhkK zgC3`ODR;V8WuToL`6AYMa?km2<2^GS@|bDJV7*?I=8pB9%i%eR z_C2#4EY31moTV0T@E*xMa`A>u0louP$NS_S&IcErmwd2iwu9B#2CK8R0R|l)K?5Yn z^GV5>Wy>;PpcRp%wJRPS~OYJv(D_) zoD0%h)wA9N2{}QSo2s5R_Nlc}wteSC(~ix-9%FN`C!%~R-H1->r(_@dROU_!D~H2# z<5L}*lRd`fB+hLM>9c(*9%!-FP{}?$$r28mP8c?wV7FU)e%!8O+p@>lw(QxWIdyDF z_841|J==Koq*TBu+__&6_Bb{qdyEaqo+NvxLKcB(JK_tZ9>>;ZkFmAclab!3Pt739 zY0zEmwg=@Fclp!ACy9hNN%5w)>S-h z@Mj!T^NcYy&+uhodSnsdhHtjTQ8}bkG)hUHSE1$Z`GQYspz)H!)(L>*2JzxqN+&zlZr-!zzgQ!C&t2gq9n$Xf~|BTSHtut74S zOAf~#_{b$zIioVJ0Akb7XY030(loOn0D}ZlIZN`na?>Kcfmb*a;Zy1f+N4M;-Wa2u`=s zxzpqG23fNMiOydBg5hV&r7&rsKR8{b&ZTWRb>{N+|-%{wa#K^VE79It8CI~ z6JO3t;n`O+lVK2(HLF6iCXpCIQh2H|<~l3WAO%Ix{WdqarP3OsY;tnbpUX|Zn;Wh$ zx#@RmmGM?(noQZOVNF(w165y;hW09K{4kJM^<60q- zvS2#vot!BZhNQQ8lbOlQa6oi;8FsEYjd8fhhPPMq$ z#Y>G{dU3JK_DH*oF87*wK2}!IL{x zah@jk9tVGW4F2}$L@Ib*>Vv6szs`?|h5l8SKTNf~^fr*-D@4z`~+*nVEy z#6AbeJ_BT*2HEcb*>8aC=WR4Su#w!>E2xbF4u%dG4B>_#?7QP>5Zn|Y7gH}gU|%+1 z^_@YPgAR~`2FO8;<&Xp9kO6WiN4GgP3CDI05}m^imJS;%9oAeQaey2#K#pjTqYjXx z2FOwA#djztYk2V;hNs@)^x`{AFU|$+#dkQp_>QVfznLf;GYiKh>4!Uat_;v^lZ%ABxQH%vr16N`{tmIzhZ86qjmjhG?Qs?Z^lE1V&ctEw_5b8CC6 zGN*DFJ#C8ROzy5I9{6>vPzXH`y=iuP%P3?;E_{R@_VvJ$E%&UI`$j4I3U%t>h=q$n ziBQ(DZ^IVcD@ql{NOLvQt!qqlbmTj*f5# zWzI0N7t(Wlsor4CIyS7b#)egPnsjUDM9Vq+7+a%R$L3eo*!;>)w4V1a=rwMYxj35Kf2r^KWjoLAii6{qU5wgo>VoL;_SNT%|?ik4xW{mX6Ji$Q13}IW$!nPb{ zJvIjs6*A7Kz|*KIyTe4aGZ&=4Dr??Okag`$v4K?KMHF6n?j9L&@R&dL9PqsG`Plr( zI`(3+#$HTzuZ%eS5I#kmw92@dKdHd;{`P#NkZ@hU$Q$D*L>rGWU7b?w2ZFe_mDW*rv!D+Z5RY zGKXMxSfjaCcaCxh$9728*bc!t2}f~b_pwt=!o zbLL&Y6=US&RwiRjaJy{87@p|P7=stcSdKvTp$a3$0KYNm6--t3SPo0a&FEl0?~^^5 zyJv#e%XncuU4G=T$$$OcoY(FupZB$zyI;6r)%E4U7gqnr=l}7uZzT8P`=z2RDa0;( z{bqCt4k)i_Try9T3E{(kUwo_gS0(S>^qxyM-~7IxJy~;jMt{jm;V%bftiSix4;^}c z_|hGFzJA-3ssH)K+n%qQ_u273T=1>`T7UVbInPY{&AjJ6`;`fM$IQLz*yAsCeP`nT zx%Y4Te|r7N`kQtxTRP^{FW#Pc+mu^A`<*|2sHf|h!+&1h@XKeKL;pVQW6ORv@X)o_ z`Io=&&G2=9{AT&6`#%*}$senV;OpP+FMQJn)Dq%S`C;&U>im*Ea_9b-7f2);wSH z>_&XXWxu1>A2VP5z z#PAW^cCZo#dC5pC%26;FaeQnkACfB?`J>zP0q=Yu7%+X8n?Uq;-wTWLR<91l3;5>T z?!`)QzWnkW$&mCD7Pdt5jc#%NF2#-Z9fKn%mi<+OqZ*2(&T^y6CxaW@fW?ixHh;I` zwVfk>O}kj3HOOx%MtB<7pP<)h$QJ1Hw=q})eUpzqe=9!;pHCWtAf#^Qr@I?4)8xnZ z@*%vhFo$l0L*ey~!l>mJ(Ff;nkRj*)uzJ2BH+%DC>U8)D8Uk{+YzG&`#^O15BOi+5 z))Y^sSS1cYEJIi5-GlQ>Uo+K8b&DpSova%g+NGGlF-+jQIlgtHln?O`)2C(gSx2=EYPzI+;H$jBwJ^-DPTMHrd8sd4gLI16qwmPlmu5ThM^UK@ zXEp*#g~{AyQoN{8r@?a8nnIn)*78xU*BwoRwDYqiVA%P2&O*o#>hq7AK2R^e=i8B& zn_Imt+*Dy9`Zo{WJ+B-F@2agq`qn~x%=boCs7tMP7w_4XZxAcIkq}*-7m+oR&8@{> zdtN={Nf+FDC|)9YTvtAXOE7!#FCX*BiiTM{M~m~zN+T)E#T||CMfnC$yx+qjFFzVm zv@;d;UQpM_^_ph9c4SH@Az#`)l{wG!B5EuVvVz^ ztThWG%r)9U*P25^IFu#JASt0V@4**XgUC>#846$TDC8o&#gR|HO@zwZh)pXS8q)g0 z+2hcVEpkrXp>?(r&m|l-m>$O7 zh8r5g^~IocyO(_Ytr#k@e28jIL~iQZ7YsJ!TZe|kP3Gp|cfVNsd-r~ET=;W0kt<9> zX{+WETFW<8LPZ zX5$a<+~RkeSC)(}87oimDp~8S7kE-*=`aDn5!4exd@_*m@210n($O<2M~%jp$dB{! zWZ7suW{(5Iq{^x9LOM*L!!$a~q(hJnHFTIwhv{^fMV~_DcUx-)Qpu9h+_cZC*>9b_ zOnnYp#eVDTgmreBK=xS0Ltu84RXSyzowUx*=(99)ejNSNvuI%HdOkK0!nJg`w`6qr zc*rA+%b~b<-30lp!(Vyn=&BafTW{0`Z1P1qJWHY`NRrTpL5D75p&Ff{tRcKUV4{VP zFJv`Q7rec{i4dymu2jdLctF2q`oz0rfFIDoOMn$%H!vrOYQ_!HYl4t|le-kgCbZ~F zYfO?+;~{(t+TtNRO#O%pCR$~}a*f&Co73ED2r+~)t;gRK8aG5m<%H4R zfbtgA*5Hy=1Jy%T4Th}TF!e@TJ-yi5mR%)KZ=)BklbCUpSIHz~$|R&J8_Y_grv=sE z7L?go?{2IIIVCq%yd`0f*GM6RdT_Q-4Vuo|NN0aktkj#Va6#E)au0#+1^gnKRlt+n zW10fgiuZ|0k>L$SYT&vSY@vCAtxA-L5+P?8hZ?y?Hxs2kqWv6b*J|2*ZrXjCcArU` zJMN?2&!e5W=yPyE&=wbcIb2Zx9!8B%FjSThYW^ZB-q>`?D&T!3r^yhg1uv32q0jL~ z#bXxGNqmaaD$sXStpa`9)GFX%=6>D3$)7w*tREyM_S4}Y;FwzoB^5t^Q9(Oa|6y{XWj)7-CEN(+;v zv>-XZ=^p1U8XAv=KZ#-rW|!t-Ey(Or1I9CkighBsD~CA2fj2an#O+>$YX{NH(4j(O zo9711nnEp^iKB(=lA!Vb+@#8FNCEmcGu<6(?$!eq*+ zMJ7>)Nptf-&9>DOwKrJMe0h2@O znJ&}B1{}l)&>H_h4vSVZI7n9z@pXzg?rM_U<0CjYQT8o?(o+a>y^A~C6lKp|MwSi` zXVVN8aEF?WOx?NynCuzqO74k2{-X=HJtp0(3n}`Nj#c1K+NeJKDH`39rjO6)0^Vik>Am8w_F$~BWi&6H=B4awR@;s19xHC-KN>yk{Pohryt!J>D>>H zBiju#OnR{CCPz2=4t@|~}*an1;loO{YOV4dUZ5ki)B3f&6*`zMq0q zfAS3~$%fbMhSybt1;%ZY0%fw3ZZ@qwwn4P)8J^iR5EF$vX%aAh0r=XlUaxSGyUteS#yDm6QZ42Svg*s6V8-r z&aCt&lxfnbGVGb!uxBz{30_w{)4xUI^)6>T!{1LdQ*4~UjqBD_qUnN(*w4nq_=kNH5+Hz zjqD8QHKWiu{n!>}nhd|z*KTstb~QU_BgcKtM4LmqPtwMZO~65$UVmvfna*{e*>G8o zu_d23+jE$9;-&9E)%$0$JA=!|sq#@Q+gbiL%eUzYTXg_-nFGo#<6yuL{cH$-lGLj% zR<-z*7o&D1`)P*mjcR4av$Yw|R%T2fmD-HCVEEJ|+AMyhFQ$I%i_v2FVm>$e^}72} zh0#y@V(JH9%)){=n7l<#S11Ye`GYV4O9HZJNB|Ye0vr;st7&>elBlr9O9jPO5WMVD zF@n#P#DZF41j&(%CLuvQKiQmxTw{!dP&>vVX-yA|!&emW4>=cZX_iM=CO*ekSxGU3 z&p3wg*@VC-f>&^Xz*sJElcTS~a7AE@k3L<-=;RL{5m(i3ZyC~{l5vU>>c^w3VeIN& zqq_HMU{%xse0~lqda_3g0@Z+^@4hjP)AUt1ysZRuDl4s1euRg~9Yd`m zcg)%I81sA#p-Tf0r{l+uCdv5|-~qdxr~w)3j^$DLNGt;+{Q+2kOGm$|3nKvk~dk#5wiv3KZ>&|J(Qy?+9oB+ zQ~u;(hB-x@1qln&e~dh7z$;X_;sm~K$4&JN0zpfVWBvxN0G2%raTK4kBgiCnhWP|r zB`5i$AC>w9(@S9g7#x%41#Kfk;y(J7#gnRd5|#wM=$NYF5y~Hbs+?>rRc?kqybv$t z$hO?!k6x}v3rGCeG0qHs{3bHH$q0WbM>6FOZ~UaScRxp>;OGZ4=chou`yDWO%;`tZ zVS4vFW;U2(<99;ZeHI zt5PMcbgD429vm308WZCI6XOA+Z+}i-t}*)_Gy5KsqsOcEz=R&XEE!`Y**nL`HMZoY zS$#p5gb;(WfOR1XHL_5{h1s%z z#UonecQsR3U!pKew#*vGOUKv!$yZ7oo@56$@67R=p1_ejJ9^^+RcyT9ZA68GPK5esH;QSjq zk&Nv*3!5(69)W7qC@m`>n>6YTE62Q@>9ka?QFcOoY&+qSw&9tU4b!rZQ*+8V0guhm zDQ3zktMqK7cFQ+#!Qh4|IQ)vDnImX=NsO&0hY=j~+0Jt=}VtQ;8vXFg25Sc>X_Mzcgjd%r>TXNq%Z76aDi5+@|q{j)`h%*KvP&v--QNd zYR?(-LP&))MaXI}3ACoHvZX1mQM16*lv%Ix1;S;?p4&l1j=cst3}_v4LF=%_(qRpt zZ9hps)0}>itL%|U3Z~37O)N%e=_+s8pv4xS$z>;>UJ)pVu=rH2Gikvp7o7Sh`S*b< z^TB9HS|a;XNwrkwoq$UI5IQZL{i%Htj+>E5OE87s(e$!WLchbRN5A?#Vba66nCfZF zHEW%pGM4|TWNAQPd)nudnZ!PsN$j(M_uHESsr`2K%SQFfoP->fT@TwZ{RT|GU46o+ zK4Dj%HmXl2|0Xa)Z9kafamx>v4bHvbl1~RN(>o0R*O`%a!7M2|kd~wr?KH3RA|7dD zm6NfVqE4-?s|w_!^!ZSpJCiWa)T!irGFsj9Y8q{QIV#n5*>u{Hk%*)S)R9Ne_P0mc z-yWLJaDGg43~d47-(~g`X4&MM@l8}+3EVUdl~FJZ2ERvl78w|;G7 zK4cj4p-XAUOYyFDwKNx%l`}@s?!hSDJs5>u4Qu$4-V|BG^stM>zb9=vrwlr$?CO(7 z^~s4Oc$SltnUp(YI-^BxcRgctJ;MsrF!u+h>0wA=upi`|KM2X7fLTfvlG*+G}Z41_pn6U8SFLY-AJZbt>txw+++l04Ddk(#;6Pv~8Gf=6I<)p&Af++c4d%w++(` zm3rGS-C%7SrdOa=kz3*Hxq|sxfmNUdK}?PxKZYVEmQ-lRZWgM*H&_U&-8<}VaL>j5 zv|0e~m!j#{n}w-#e7dz&1zmv8jiRUD5RMN=_ zd^MGRX~U9!d0UcBc%za|cz;rz^fD~=GTA7Q^(FUMXHX(i9@GJmJOO7uY?IP%FMfJ; zb(54DjT&gl_$v6M0ZTwWVacFL4xdg~AOy^EP$&HiOhVHI18kpvnnsml@N4;aFGN~d z=A)a!eWILi2EUZvHq%sc!9B5-=&G*HWm{Uq(L{S!XH#3OYjfNOIC?vc5I6Y5Mb)d8 zH8mz$Izuh7(CoXzu{hvvd1QWd5Ev?_+!1T(2ygC+JyhEsk49Ryu0l~<>=RR0wztN* z;$0gPfu&usXjiO-@C#Al6JyqdBjJ{KSct2A;)K$5H}L)$?@q}N`9!kU zZd~$ccPt!e=-M2PHMWH#k-*YOd$=q$}D1 zN`$Lgi19u#dS3N{>Uj%=nC}yFEDoy~eYMSDwc@avIjklQg=qDO2i#p$`|V4XRx4T0 zd+>(pCDCZ4y_H26UmXQEB+U4AizUZ;8b7(wi3)BIXkvXGd^tGz9Z1mgGDkx_u&gb|h(x z4K49FTuP{@fzB6Vvroj%j;b8!kmxQDVxv#AoE=>n?W*vW{H95s<$j-7cQ#~}ZGkf* zuWdOD%RxY8@AQegM+!R)$HEN(jU?yNNm$t7+V1m-wIjtj+=GQ0{-)U{?inf6>=-QM za0Ku2iSS4v&vgkFrFl?p#3we56e%xfU=xG3yL{qZBSkEa8?fm?{}1~_WTfcjbpSTS z5eP%(Ow?1~CIHhYK3Xr2b#+G_xjKQIJSCY-lzbf6`ynDQdkr2=z1h9spO@B zjG*{vol9d$C^QHG=%IMOl1pHaWCOXt*KLkb$6bn=e@(flmOAla8>^V5O5IvXq1lQ%yB#O;TCV&e!Yqi~LZXx!jT(0vXmugjt6nj(fkEk!|3#mBV42&i^LlolOK z#NtEF(CIjg4@S}E6RpJ=MPoSjNPBCzA=cj6+8)KW#n85}iZ}9tgbF54FuM^N&mj3F ztgU$0P;fk$zIo>?ve<-Abd7*|NNPoH0Kw}OzY|k%XkJUrykn)j_fend9-+YwX%h%j zdz(*e9s$yM7ohpaja<3-`Cd@oI)de=1>aKq7HI)mrn__{K#*neDS443Xkey)9Pu%@ zl0&$~2Yuqcv$h9QOlDdH@6qWK?IVgmcZORM!;CII7#FD$ueogzq;z#e9G59T8lcCl zwu!>HAMuHYM^vhL=d(=~#xf$Iz&%z+pq>YlDSpd=62T!x=i+nd9OR^!ye2AF_eIJxp^c9c?=LhHA6kIU>Y%aDJePw5GVuSg{5ggYbP6uYy z?h~P+X29U%D&&~qJBv=o55+3wpMS(Z6f(MHpr_MeT8grirDaEg898T zrd82*01Qq~Zr=_<5-XCeK9Lw9Qz4-ix%8Zenf{nhJTgL*y>it2g2q<=6F#wZglN;K zJ+jsO2XGNNYl*th?OSmZR9z@P7w}UfIKM~@ zg|irVtDm!B_m|n#9$0@ zpXfX%hV2YiHcc4EhwBrV3B7#V6wDWTYMe$|6kHrHbB<9m-tD8<}jV7}2ZX zAWd@a)MBJf$E0Pe)EXV;{xH(dA&t(lxiP$qqqeJ~rM=U!#anPfU{u4%13jn|TK8kt z6}{hR*r9tUrh**C0KAFSs-B)@26Vx$`jh|dn z=FM1ni9s#Hh-SIOtb4QaQi3fHV=jmW49%}`nm6nzg%p-~MI2j^i2X{4lQZZ_wa9wzTFf>N%!$R-Bc0mMep zNKL3gHsVIsPYgnAr2GVluwcGI*D{BZh2|>DHMa^Ah1VEHV9zCLTS#Gga3CWvpUq%p z2No+^!F(P8k82V!LyAQPvuhYzFK*eHWUOFf(SWTNeSIpwYcgrL_QGIw!$=us-?LksCSb(v4kdv zv9UAgSha=bl`)csqHmtJ=iVT6-3Dcu5&ZiwQk5Z4b45l>`EyIp<^N%^!`Rgs!uYg4 zEs4TzioP|_(4XhS7P+_X=QSG)bQoLcIrsEmw+QYnmu$iO6Z3NzE3h2Wrj2?sVTl+< zJB*}$=mZ_E9hN%`OUk({ZTi|l{2o*~jJZ;fVnOc?J&yDUciW> zE+|vjYTf}NNDspq6eLF~lsREusl679K%ugQkb2#^x6r}HU;W&WOC&*F!f>N`$f_si?f0rtm)j1N?Mgg3(7lpv|Je)VnET)(b@S@ zkrIS&wgv@XJd8A@NJ6$(w&>B`$uMrG7y?13Keh?OR7Q60nG?Xv5!<9;Igk6qmXY&# zCh0sL*rpC!dbdwJdTyxa^}IHHnAk8j8-}29M@CB9G$ZTS-NLrLtu;p4v>A@aYv0rv z4%Kzi-Tr0@Tqt>hEe$7m%0o%d(2!aO}CmRXt zWggArL-t#TukvWG>PCiQy?2D(O+3v5stotUMLf|{!?Mnn4Uur@N{@~cyilW1S#fnq8cbi5pe0OOu=qOp)5F7iM#s)Zhoxx%BR5-s)>qWE?SXxAH23YWmw3R9*+g$htP6RHvV-50SQqjX;w57&9`z4^8 z_(Bg>@H*+%NOve)+aAL^n7U%>HArj18^d_}66VlMk4}@i@b2A~>ToR96{~LT3Weu* z09|AP!EWgF&(+NTg&xqQ-LXi(qrQU7d{ukvL!GcaPno;yoL;HzDWG_wC6=hgJA*wn zf>&x&o2T%g_&n<9ra^g5TN3zWpQw~V=nQX3)VFs&Bs~@jL5NZG+H-HWqwOf@A(82L zUwCVHX7u8|UM+P^jzl^eGHQd?)Ze_wG$?99%q|6PyFa)P>3FIZx2MrYn-iAF*ko zrzZJZ*5%L zQ|;nc{kKGTjICP!%H z4oh0$7~`Jk;w>GKmElASIY8!vL+`b8YkH%_~$ay1;{@lJ?NsJgWUX zxx(r#wG@xzo~c799B+-av#34Iu05`Ng{N(V=#}`mqoWC*B!E-xhqK!2HFwOL!M5SVuGiH6S(apzItP$%wIeSceKPF!Z12Fd4_{% zto@Oe)~%jxaXGy`gHdZY9vkYwc4?iJig-@lmQY7~=Te#~orzjo8-v5zIi;tiQXZCz zc2H0otEU=d5TlUh>4{tU3m0`EPg`r1gCqm+Y=@-foA>f0*)f&O=ZV1aR%Gj*3g&oE zHtIQ~@Rn$MY%4Wi>@kr>%LRldUd(*?g@aih9jCN}LhUp;S|Vy4(H@R_T2Xtbsq3L| zr>9I1ut9~}Jy{?plfO4sFY2DFc%Gr_ckX*OLt%0V-XSr>iK6s?d{39B+m$2WcJEYO zt5qVp+(VQTED%~gc&4E(5lr+>gy%=XyfpFj1;`VO@4tBCiAH$?TCOeXLY{F)W$uHhGI)&gKpkq&(T+ytcke`fg7X+yt5P!qL;X_7)*d<-AZnH|vI`%x?S*@2}9Bl!5vEuG=+1U`y0 zJJ7(vpQKJx?UoHU-q><|>-9IxyJ^9~aIog4D|3m-5AA50jo}1+YiKh5=wHKh`laVP5jgz{%mAIIPO0o#i5QvCiie&0D-h+CJ4DE^CxcF`(Y zL;}BEqEp<1--Kurvb9cxL@nyWB969%SSGfhJ&rT__m09SY8jMBw1}-@6^835c$ z0A1)6wd6h&q4fjBwReK>R%n()7s4N@sofaW-F)7Two+I{!%9$#FbF9opPb`^@N)-q z-3g>u18J=rsXeUX5q$-S?sFp=OmW4dUxsOLyBobWnBvi#2AYKp5NRC$ZH5$LkU=rR zk6^0aFxYUs=f(%ob;V#^i=DUM1G1)KkqyNdefTnAZLx?OF$q`YaRrNjXpz>89@bDe z=>&q=ZUk!!P~3wKzS+hSTYg{-6?LJ&)sF=qzd8`=3daMT_@-KT3oap4`xfLtt3BKR zMYBAew)^hw>JGHvqi-#NO|<(#A7G1NUyZ-zCetPCs|E0tI));8YMmBHbOl=ZGihiI zAi>ZdQmYO$@Mq`(NX8N^tqDfOYXid1O1GIp+IRMG~-o7T>8b$^YvYP`NV_hAAP4tnx>cBGESzL;ZMFyW8P+yNj zY2M?$IlSX9wONFIu0Z_96)5#tvVhzt4YW(eV=JybRPFnKZzW##0D(dcU7gURtqOc* zuN#`%OdsdVrDll+I%j?0g2dlUWO3xAr4kfp|O9CX2vQ@RYX} z*oVRlk*fAxt#@Mwv$h-5!0j0(&C9k5Z}&7mPe0gNUYB-Lo<6y1%JGK5JY5?bR^@Sp zvsrL?rb-U}D{bht`B0utj(*>^U(8$g%Y&m1tor)$kKH`6=X5r3`_bkJ>2JS&?+<>| z_r2*~tC=(Dy$3(@*k2caZq4m~IrZaf|F!AU-@j$^KP|i}`{oU0-(UOHum9u^-*{wW zd$i=SOKy79(ueQDXp9=qhS9p4T7@JE3~>F>?(H-;a$WbG9d@B7N`r~m8p zyh*WVGwa5W{*R9$ITXn+G@TK?l?_N`#N+rI_(r)H=#w8SrFP_NyhOMfzYl-2Ts-^< zyN%i>(ZTq)rm?nhprtqQ^Pl~B$=>U(|I4Ti@1?X+)ZX0O(mby@-W-p$He=}wM@Zk| zY=&7htIv`)cZL(#*WmA+;wz^)U(YP~QP1jVXoF~6v1I=BHwaDtgrZMlj8y;itz|df z^0$T`Nqs^%&xE1(YccNTuLBQAlwv58P$l`9%C?3RdnOK9fI4?YRS4u&>T|QI0zb9*!-olxF2;bTofB?aE^I{NNdIPX zuO_s%pf-+ndm+XEVqe)YAohW$1fXcuvdII}eufER-15JLVgt!Q-0XWAeV2k-2d}+o zZ4gKON?>XQzAluyz)b=IUm_mG(tuVG0i;TDaTNpIHq_8^D*!yS9Fr@IILh|wCIG2z z0Pn4+C72C7q8QdC)u>qwt|K@P@VI06?FL<Sz%ewIrkYqP3_H_2L3ccC9@~8EuUPgN3tTrT4?Wvb)mtLw3y;NIz5#V5q!Nc9)AqFnw z5|(Js1H=OS%@Z^qu%9621D>pvWE#V-Tq(;{yw~_giq~rBhb#_vF^Ma{Lp|tkV(KK{ zDD*%xVG~+u8zQ$ZAU*{h4@Eyad914yUa}(^tDdn`B3nB@W8TKLLVFZlkV7}@BmoQ8 z9GpuY@bzc55hrc8rMT^+1|Q@0!AfaC9EO}WKyozKz4`?)Hu(o(4)x!`a)B*CaT+)C z{Qv*{zbAp@l^AnLi3p~z>=-@v+U+a0|9OIMOv&E#l@Flmz7n5r-o)U9(PP(dU*QXv zmX%;XBG^27+;yXUWxn){CBCw~tAh2x3yqqI!Lg-2vA68+OOhfu&(*gq@XJdVoS3ll zrnZHjNMHWc#x>9U=4X4J8Mk>yVD{ucMrwYszie-MLN=HlT^dZ6{^#D(5?@KlWSFLJ z$LH4k_{;C_IQ8G8BHs=|tC;nT2TM=P8y_4yx^!*X=*cB(8|O_9R#BmR^0<3iaEC$X zrbJigyh*`IsvI*J-hJtPh0)>T*J$ zVd;_pUJXAlcEVyZ5&3!1&LvevB1{3FmKgEA(9{z)A-xa2ypu5tv zZz6Q<8&{I{`NaFnfBO5$CqDYkIsf?YKmX}(cV2XQ?z+|E|9D&A!012R_ViWnyWwB2 zer3wf-hAh=$5&_m^s9j{efij~ihthuxleuQ>OYO1^uITZX}P?1(TmL&y#3uBe>+fh z>4HD~^?!cw@_YW{BeiY8udLX<<@BFwuLxHhtG!{`9UptRZuHxhmtFaR-Qhp{@$Gk% z{{7;b7n&Z~b$ZGlgYSFfgMYf~K)Q57^8T+p_RiSdW9K#Q`_$ic9sO;5@wGquQr{Dg zPubqK;K51nXbyb-e<$u=d;I&=ZBN&%{OsR|Uv=H{i>YlN>27(rG4%Tv{&C*-fBp0J z8Ktl8==@%yy0;P=01c;TzbCpLVy;;B17`S{)QcT8@7q9gp*bojQ_@A%JO z)Liks5*VuQAJV=wB=SV?GU$57Rb|tH7g*L@U+x=S4qG2JYD{Tqa0UTXmR(Rb<$e8i zbB}-T`9F{UN$tIfL*@5>;IUv=u!)+h%2o#N?5hhdpEoCX9U0H~$un)^sf&dpv<+oH z7ZIp$?`X%JD)TM~P9gA7lPAny5Dd!>AvoKYihi zH(v3@j_1DHUGhOm_A(+HtlPVM@3QSn+Y*WB&2#7C7KZAM_SRTeylZ0ucZqe(jXu=g z6^+krjYZ~yCs;D<7$!^>On2gf%I+ zZ(n}*k1Nai{_DnPUj2tv$@`yM`o`stU37ZO7ytVFf#eGlcOTw&$v2LC;+lbv{l!1M z?LQliuAlya-=)9*rFY!(-@o&vzW>-WPhRlMhX?v6{Pefki>Gh)SG@N-KUq2|S$??p z$gZc4O#bgXBU3)}Wq=he&C&iK)^U7!B1um11{U;pxN>ZX2R+WTgo zxa-0%o&1-dSJr)O)V&}6@RSR7Jhym3#m?rBT>G2XuKx6<@4fWL_w-%x%4Lr|zG=~+ z+ZW94`TNFq{o?EE=X`Kn_U+$z>b=)oxjvG4_xpb@-k*H?Z@#nnC#PF3`{1b0?5G+y z?ISn!cU*s@?y2{_`~5pV^vh3Fy#B%WeD|dXZc07;-TPMmcFx$h+S~7*_}+Vuf2{0G z+rZqrKUekC`d7w$;itd7(y@;HLWn zhyUi=OP=2Nzkf*l+x`9D4ldj^rSIS)N5A^HC+>LSo7j^tQy2A} zKA!naa9~4cvXfQo$gA4=XS}J>gzyZ3{Wh}wej&tH(;n8VImQKFLp22In zuzS1|_KlljaCJ5uP`5%QwpxJz;o!z#&HUi?HwAB^KyU*W=LM|ZYyAAU z+28!!tDm~=vyYDb+)qAq?|0W%=)fT>ODIfAO<16ModZ^%Hg1{A$8i_fFpY z)m^vz_J4kH-F=fTTY2}azkf7#!hiFZ>K-`u#v4nY?s@gG&p)>Pl2>niap(P~o?M-| z`1c>5d+*8Kx6k?Pf_2~e(yjkH|A${Fz2(KvfA0M?PyFE7H+6>I z-T2a;i7#AqW#(T7UMk)G)Sn+bb9BwucJ6x5%Lgw{T=n3zS^sq8>RB~c?Y`+9H~j0i z7vKNc=~sU8QyVeQ-u3#dx@RBU@$XmN|HI4gymif?FWz(8%+fQjJo?VLKf3Z4(fcRf zb;sr}yeVFP`T3Icga3AL>KDFpN&nhAe|6KxC;s}%x|gRNsNJ^g1oQ`aS>F^VI2;b-_=5=5K#~`kf#9+*_~h+xYKae{B!4IIpf?%Q$U&px_p;6wXfzGH7>_YY3|c*oB1IwZb< zkofE1q|swlrZ?4BhGa|_G0-y@U1W8bQc_lN={W3kbYtzZR4fUOCwD)wjL>WkPPBag zs9-5VfFsPs=G4ldWr#$<)q7X&y>t8j+ueCb zMUkv+d;*Lxf+P_n4jECQXUI87MuHNC92}yEL`jlnKm=5RSvi-(>M<=cl%S| z|Jst22pqTIs09b>me|<HeaA9{`_C zx_J~CJ{7USjWnabz7~LFzDXED7{&gFfV!r>PScTvX?;ckEW%G; z`8aWB?o6TU$6ZWUNeS)_po*_|un|6>@U79S%PssnQE?dgNVZm^IDf|FEv}YZyfD?u zAtFBboVtPWE2@h@-7Gq6Gjb~Dj&|Nyas8mMLwH~2CwbPwXBF&zNzwx&_N}V&{((F* z48d38eZnuyKIVt13pK>hRu>eLQ)Ny#FFFe+=LjhZxteO>I4NCDny00F44!GHZ)%^ z9lZJaEo0OXHB%{!rvOW6`K-XVo&z!{m$aK^(atB`izzv{uX4*S!OuMoBIBuFb1hR|L0;sl*O<+u7EdinMXwZfxFj@cvMl5In0etd5 zEnL5Jf!mB}4!#rs1JH&qq=ciXwi0>JsDfVahi%=7-Ua5LKgx`N$d41r(A;FG-X-1N z9$6h)Iv_h)KlbcVnrNUYXUD3>D)K{Uj!0(YQ$S_g=~QSj0F$#jjQ(dnmdg^x{Hrm& zeb|BKjEn$g_aD*fap-wzyl7K>nYNheF81Erqk27Ib+U41`T47s9tDnZX6}Jv zTJ|ne0mcon+zQs;Y(hk*w0*6)jvEq)A zbTNr9S27tUatZW<0D-=Lt8w9QD4Iau1@3FxdP5{WK~DsC-Gf2lKl2F!^ax_-W-p)x z5d{IN1h%alC}~n)Z{Dan!VC$A{t2M?X8f#vAphFr#h%WhXDr?xeo2hEoclbU^Uf2` zY9^}RfFZ2&X$`;DFf(8PFhdjvjlQI)gg9DQR6@!eAPa**XLInK1^6}q|L8xGmhu5S zpqzlllI=%Ys_X_X)5h6tGnQz6fOq{cb|Ysy@G}jRk)a_<%}@_?NGgX8s);JA9h4MP zQ$cT32j5;DX<6<;L()jEc1FBmf@N&$7k}Wz9b<;2$XAkhbCc} zp#Mk%Y&;p9f&E7VY`fzPCtIAI8r!?lEitfDXo2C?^ zcRApKVfSyH3J5t`t8|T+aEz#w<8g@;VFM##H&@tgki#2dVIVyL9~l*Z+`I&w;t#_YgoRK@`a`FjY~!RD@m1nn}X7Zue=AkmY~xM!{&WMJzDqbonsX&3*9G@Gi^HS?Se1x%NSyy zz_U=XJ#5zq^!n()&~!w90x_w8S4s$LobtHt`9zT7eVfWFvKc%I4$(yBNblRNwCAK} zBcRC`-@r4r58?IZt0o=~ytz3n>ujfF`C{Bn{6;PjG(*|>?@lW7T%a!}zYs0c`T5zy z;@-m_qxGG>+#E+@sWB#HG}mmU9uMu)UHo3kQb%O;&W4Ls?XbkX%NgmI>N*}LVS&&5 zNT?HJEUBp?irx*;6YZt0I35Q=|E)?Cj~z7^`aQ5_z#EW|0_}zvs2&qql=M2jW08#&Mk(zB)R$+(LOIk zLI`J;CW4%G4%jp`4%#*NRw_8|x0qry6d*%$DzmaAv$s<+#0J>`X61k?%@^CK2%|$( zFLkS=C~m2|Pb_)i4Pf~R`D)aiqjMVgwpw0WjH#{qw5diUCV~T8tDj(lH!AN)JbbbK z!4<16JBE{j%`6L%Vb#5M%j)$4?7U9&UMyTOWjglJ2FJ>+R{S{Sr?96=YGPD$m5y}L zWFZusLgyUo;3=vhlbt#%CkHbgm0z6>6hfk>-sm9`?nF_D5Bsy-7)fuF8xm2yS2X+1 zzNP?LkD^TUZ(F`!*Q#n|y(bGwuFtKz8L2*jk!s*CE%={?rhkhCfBx0vaolj8j@G*MK4f4hV!!^y+~4rtq$M9eyfQib+mS#4-@=(J?8xgy(idVqGqQAn8- z4bz-R0N&wsafR#0miDiY0wL}?fGRJyT*m~wFeT1x-~Br)Wc?o57;S+S<1&%&cLrlc ztB=`ayu~Vwd}&X2j6c76{8;GwCheUG`~%YCd$m1rmrirJHD=}K$t{KkryP&>zv9;2 zpS8fgEcGgBwz&|Q5?N4lnWdCWCA_L4ER$ObRlzrCKR!QO8-g?AqX`t2#`@-YUPHvt zMDMw0S48(X!%A)@UIk>6;dB9#R{p z2cGqorTCO~aP&f-s4)G$xjGRe0j~LnC3xgeC0Pv;0c zt@gp_^x{s>rN@Y{ws4i1Rg}I{l}k17e3{$bWcKp^{HL74+WUa{u@2 zL>>RHob9Ozc*}4+ z9%6D`xhH-;`_jraw?^EgWi6^hY2K^2zTZ|^R#JZd-aJd1>72{t{`+GCP7vv>5MmV_ zQ9g9=(-zBhtY_7E7N_v21)_yZJa>#(<*;>N!JWMx#Zaww}syh58iD{)mOp@L@DK#S3~z%C#Py_|Lx4b(Zue)^$5eB0#kP zmM!7{!X)b7F@>La(IG@~Q_1c85$n#61^3P{N2K&dIV9)iBx>u&Qk8L8L;?84Z56;o z(D+dRKLp@E0{9v-)OWfQiP({92mno?6{p~5|?iVO{JfHd7z>9HLEy5 zeL!*23mu6Vx3*I{yGt(Ry7enEt#T>`xjm-)+?_@FLqF+q@SHq2*egpyDbLQg2BncjjSm}*KOB!+|l2@vAE-|x)awkyeNll))4_dR{uIdjgLIdjgm zbMD-`cX!_JJe5#NCGq+9zm>WNkbjdU?K?RY?8@ffRH{45pKZNIPk**`#t}!(ZJE>6 zd3e`BN4Feu&@sn!&TBdN(3Y;_j%hjan3k!#?%8s5=d44=_3xh@VMXt@ty0rGF(p67sHG^oWe=ULPQX>O=he+LV^A0_69`H?X zwsz50=pFrQQR={PU30q*0a0|L?I|F?0*w4kR%-INu0v;cq9An@L6mh@QMs*!9ZBlg zulS>Gjw(}6e5%y7uPRk8)G(P1`%ewgUUNg8JOn1&hB*mOG9W+|Ly!yzm~e(584xgf zh9DUbFcO9!84zH$AxH*%>2$(3Qgk(T~35FmU5VAf&G9dKx36j~|Nw|$lWgQp2 zlxmygB$94Zi2vA0x|@TMsB?#c+R?8I_RX2wjQmNcIg)iQaFS*27HcT9%ojAaUsrWh zL^~=vZX42$3Im-^w9(%7R3NtGDz)PsHQkPqQ`W2E$wGlN1N!xjI3WZ>N4%x}c}+!4r*9M}mvvm@&}M;UCi0WQIyPPC96ITz!Q?Lt> zYgrd{Fj^3h>cm!+or`v}of{yrZG0=?PyxcBPm%Bl5yqJo+lD&s1R!l)4z0{4Fsi3V zXV!KQghF}j4rWP6hI3>`^fkJ?x<)zP<>1z+gm;C&q_;$%yD=nsmq|Y7T?&}W6YE!_ zYm|#6-Cm=*NpLr%3Xn&+yK@Y!+*_n>!n;Xe(z{h)nRl~5BmYLp=e!#LQ+Z-WK6VJo zCm|*u3zL4U+Nn{ibAw?+%ALmE!W_w>CMSHL%M_Hw#v(S}hb(QpUm$01*88pGbKY+N zQ+Z;hZPa1gB)D4!@)8Qm-?W_w8=u}o<9`2^*|r~&b`svh0+Ze&0*ww!C7<&i1We_L z868lUI*?#==xvDM#AJy3qonMAfMa%zH~9+FNNd zW!~G8G3~u3`JA@`FqJ1}+JjWKM?$2%{m>pZeQEDgshRNpA~5OwRbZL-nLxDnH_5n| z6It&Q$>+R}0aJNmrWpuhGbFg%n1QEVY^U6|<7m^5SUl*@q^AXzc}an2Cm|VQ4&o{l z%6Y4$9b%>(2xB`WSaW2&W}}^~ZKqDeB)l4dNv~F5nO83m?c_|R%o}7fDQ}=;Tx^+H zuUhgsuL>}gCuUlPc(zP}yB#g`?dxaTb){m$8!a&DjS*PpwF^YMZIW@fXDg#5pYuin zrt-v0D-gz3NN{&#E8*TyVcXeEswTY61tz_T0?WKD1RC+1NjkU{w*xO+w9v!80L{7a;6!n;Ud(z{q-nRl5$^wXu1G5z!t$>+SqfT=t& z(-4HQArcDvsn)i0gH%m;KNpzvZWLJN{X(Fbuh&aH=UoSw$`doyS{?h%;uek-udyH}u*f4Agw9>RObCuZbB2IZ4bBtK{6KP`0=-jf2c-3!G2FVL)u zCnTTq9tTY2i5dBjLHQ)a)&=#ixANbRx(V+!fl2R8fo0z70?j;HA^Dv5Dqt#4%*clf z$|oT*kIGaFi$ zf02wklaudHlFxY`0jBcAj8bTrN|E4V!kIPNn@+QO)d?Yrth3LgnS}Sbz@+zuz%uXe z0-@7CBx7{?o8)uer+}$EF{2XN$hgtZwpv{VOFIc~h`^-RAkgSA zNb)&vAYdv_%;u#JF$Fq+pX!`%bvP-m1IAR=@TSsE!rM$> z(%W31o2L$&NIvIn44BFjGdf`YQ3n!SFVLZvJr?cuHYV*>he^^-!rMw<(wi)>%$p+6 zjLDXg&v_F8Q+Z-W7tC+!LPF7)6t2~7suJHeg0>$zxgI~2IuvXe{@fgAb=Y0nNqBn*OnQ3?H2cPGlFxa&0;clBj1E|1)PaP^zR~mg z_yKk3Wqqt?b=XJRNq92_CcS+Hn)R`_ulGBJZm}yxsx3CM-lpU0ln?u0m{XgWIOsJvj7?QTq;x7_A_VO1ojIDA6$0x`U=K% z-H)1WU5`onGSfONW{%$u;EzY&Ia0($7iY&dI#SXg^-dQn7^JE_S3mbOlxZ7iz#s#- zhe2Qid&6{{Jyt>2Erwp`x{C?8p2!9U>VJFc}R&G9X}P7=mPI??T_+(`oNz z#@_Ea9XOF3muau)dQZ&z%r{T$n*jUP7yHOHRt#{uSjZsd?UnU&F}yTM0Byl86R{|nDB-*;Vo;zZoWQ}LG!!& z1j&G~hfk0U2z&Yj$#AWmLk+pN{1_Q`B}Lb@Mb;XQbd3 z$$+q*Pml}CO z;wxL{P`{33hMasD@uAMC0#mZVpXU$4`5c6ASTQyTI3&X$;3zBH&$-`iC}TioFa|6W z8G{SV7zp4PVBf%gH_dV1MH|lCtu^ir;RH6-wx5&0C0=D&Wy*bztfV2M(@yl&m&{X+ z`w96j&ToUR!wt*8jgj8b&+t2OZpXnho+2Fa6v)_HG6dKIvI5K83c`e23BVDb?>8(N z5Ki(5k^upMs2NYmfPf&*5F`TvB2Yt+3^eEu;r@t6)h3;46L#Y4I8-|v+*(7 zlEFAMz`tTaDU3<-^7KHo*}(s1HkF#f}|@<^fJN{(~@LBKy+aUk^$i~pCB2= zBXAq?=eW%gJ;FukxWgm#=unZ)p(2dWu)PC4u@zClb^uPLg?{sr0pWC?AelXI)7T0n z?3`k%nQ03xsV|&>)mM5a;f_ZkG_e6enLB|1b9rNdW$vZ|Q|{&h(=LwZ!Oysp1eUv# z0jb#;z9NzV0j|V!on%0OD=`GgfB;`&2$BH-e#H~oetpYKS3KHo`TnY**Vl)J0Iw7a{&jJv16a(6F*Sr@yr^gTS2u~{(~$^0|M5wAxH)UENDZJ328a`O2J7NheRF zV_Sz84%ymtP1;2pS>esSjHFa`stboibDaDVlw33zx2`+UKD1!{bQdmq=TxU$FtfJp z5mev`;3K0`?lmaoUdvk7A*oJwUJp>een)wE*OP4W=RnaU^Jwx}07)yp|zle;Qe!K?BnkEPJz$k3gRsgt%_3lM73W9$F zIQFM+)uigz>tB;yU61~1Fpd?yjZyZ;82ymi3|p#lx;eqz-=dy1fh?ndnS7o1fmh#o zKhoO%HT~TOn5n3#;KfaL>=dVdWLBQ{aH=aj%!{NWk9pMKI$#Wf|2H?o5^?fm)K)m% zgc6u(Cui$H(nFAB*94ZESs|Ph?!#mhX$Yh21hE=E0z!S~qeyG3YO37Fm>Ezrz+Hw6 zG#nUcIKab{^)(zIPfxYKc`+8UlP9BgfYVL5I=3nME!1#;`#42bI@OhS%F6l;bmcU5 zpFj~O&ur(DEL|2+9G#EFldLXlK`FJxxf(5Yjm8|SE?b0N(z2@NK80!?7Ew~A293jX z6j@J$*!c{S`p#!5wyvhmeU6#hnp*dHWMJT+z`$A$OU*a1*5MOc?Qh=Y&_FV3Yn^Vw z)wwNV2G+VSP-Kl$T_cJ*d8%tCgo_E`c0f>Vb#-+|vr}E&`8$*j)phbz8swKiek(ER zEwo08KZ`i;<}L@X^JOGHkJg!X=DtGS?}aBezlvSnwog?%O~->~2uXq*8086fp$R?VUhOL=)L5pk}08 zPinr4x^@msMi-)+L}V#LJh<;6M$fPH5F2F+2O2)Cz4JXN`qqZEIlB?{(sf-w#}Jtz ztj^7SA9YSDT*YjI*Sr{YW-HzrTwCunuQnToY!ub??gwnGE>6z4AA*X#NKKgq(*SYC zstyCZ6R-x*|C^Uo3Y(K!zf7LD;&q}X@AoOW=cB#`1TCOfB0nV!dHBGuGS1K&n@ua> z{?Rl_|Gz%?#{b^{&0zrCknjIrf)2+e&>q^}4Dy{kJXbP^Q_wB`L8rKWxFvc!I3!Fi zA|3k_x_>WwbEVX$sic$YCyh!xd5Y7=SMKf_we7!XTyuq z3OG(!L8QoMleo@4o0ZqWXNT2dKD&T?2RZ>hJ5KGvXCtieeKxZ_`RqVOq0cU26gIjp zJ{voWzYj-zHs?XH&!z%Sp1e|gHfJ?`HewMtj2n^CXRk+xVSF|j^x1?FpUrxK&z8vy zKWL^l6|g?LP(!RTETM>okAScSpKUZ8;2|>dHH6O|PYsRFCWAhkFygaC!>G?TQ#P(E zY1U^m8~E%%aZGg#U`amv9+a~_TV$28q0?s@18Y4*Z@z)>+3V9lHhE@j+n~ z>$9nb_1Tn9pDpbepUr~4&qiDgb4)6=R?1v61gT?ub}wp1%7r$BYQ76$ai1-6N*QAM z>^_G0B{&}^zji}xlr0?S0-xPi*IA!U38Bx94+7h;KAYLVXNxJaQN(<9NG|r-3G1_u zEb!T`_1S*_gc}Wf^N+00zO@IR{RL==xX%G zlShbZ2y{sy9#jZM7fe-J*V7*AgoAS6(wsDj=KR?q&+61QF|5r6lV`wg`<`ACj&0#`aTG`B|au z=Ux=pPOW0LXR=CdB4dv0KE`QJ0^pnm;h?%UsnmAJ{1uUC_Xwp?EY!0Hz zyWTDHHI(Bf6TOyqWm6<`fMVofAV)eX!V8YHg3*W^X$7?ZiP?CS7^$euhBQ0i4cwCMnt#Wguh1D0xz-biXvhYZ&h*8+6tpEV;?jLED$B(pd zgopkLkF;Kd7G|<`?CqG0ReKcFcK;4Ro+-oTojmjIKR})PCENH4iBeZKSv?b@izD_)DUv5nO4I{@Xd2F zNX6+^O=a}J%xGBYy+Ywe!%Dd|(f;P8*j1f888{N_CX58%qG6>uFzfGB_qPiot}7Rb z3BH{?^Ade~zeCRH4wT1YLWl&*NH+&(*Wk+D;@IWY7P#YR57G>^@G$N7sA&UpX$G=m zhiN=RL+|0_tEMJ;m}ZQx@emOD#@9If3R?S{OAxO(c`|TZ)=d}*%*FT`bC_0*gEDIX z&9L*x<+Q}6-dop))phbrK}IG2FwM}z85|AF4Ug72dA1V`%*AG?SP+

    0g4B5@5EIelb`U#o zm=-A)+7JfjIOTx~!Q8M1Y9h9jVPxsN(3vpyvs)fOkVSK8w4SV^)Y;gG@gC!dgEj+#7s8@JB0l1+(FFY0T;c(#B0D>0K z4@S&L`ssjCdL?Mjfc6?bgOQ(LV)JFtIpHR$2^ zVVP2I;xiEKeua;de;oz@_!JY2QYoKeg3-4@iQW~ZehxKBSAT?r*@ zFv@IC!Dt|(Fc>Xj6gIjp!RQ~Lg_GxGm0*+^tM({*{lCL5&y->FPM-OqU{o|KJs9Oe zC=N!AeDX>OM!7FB82yM)zBbKZbki^xC4<2zVI&x3y&xEs6^~8MtbZzCgV90_u}@+X zjA-}>2=*knw_wz0Sn2%fNaRx_&QNuHx%yy!|sMs6^a<^mD8Rdml zA|W7DkDU_72aHv0FiJJ-DKX_U7?pOg_Atp<&<{rch`f_Gsno)rfg*+=b&X4fYG>f*K$Me0*ulbkKPN~jkILqvaFpEwz zKZjUsvp7Y?LM761q&>~#17DXyE8&>{GF_dvrlrSl|I=re)F&1fnzKtP6(j#Ig^LJH*!BM)$P?+hqaa))v6pZW57q^b5m#M)8P-kAPqUy6T#0bGpdq@|GD5 z`8b}@u*&-<#99rj9Cso$yxO6LWYktU-Gq^VPBg4Cr;7ue>H&7jevVQdfv%j!_SQbL z!L9v3aZL5Ez^E=;^W%8mpqvfbL{_0U&(-A22_m1%d)^qxpv@Rq=ivz1H?Yp(yP4YG zT&igx88{E>CX57aVql#)L9BJEYei8fPj&5FaWPlS31Urk4NnkjA}5Gc*U2*l`6Z}h zAICFvGe(?u(V)%nXq{;%8nlVcuR>1z)_z!}kDx6+D6C?GHmYHRHp*wvCheG@jRjAd zi*L=yQ_yx%u7nEJIAxb|CQ$21wbr0asPhU`HBTI*A=A$5{$^g|5o(06kQ_L688=xn zaP0Wbjy+`x$r-oYob61Rj$wq)OkqVG1~?nA2GIX&hY!6U$R7d03jBH{@(z4(6+VNJ z$MWIxXI!NTemlrNH`)|_e>3sZtHFZeIP>zKKa2Y5$&lmZ5rFpSt8wrc(Eo$Jx(s5m ziZDu;G(-Yl9X!lVUid_tx${UZjb~0-Urqgdit*Jr#EbcA%1L)UOkeFk@Gf3r1o!qU zFnZtOJ|p#sIc4LksZ@;ozvQbii`n&`064?VWYMJz&)&Y zFLlCkPs~>rK01#z@9)16U(Kmn?5n8&-d;+*?}O|$JUY+C&ByTYeLy&he*@!Vc$4TT z%wu?D@G(5Xh_7Zngd4_J%L;`5GwYEGSYKVJA%+_}NkqelukP*9d86R~58oE_HN<0h zTTw&v7#f0f}V|bHkpm_|B3_gZO81dC&VDvFODvB4#A}#XOJv=&3b@7%3r18h_4BdXg;bVC5L0}v9=z-ZFLJ?DBqlg_ngk=9d*enyDWNmyhryxFA&&DUK z3gVLs5Kjz8pWF$!As{{oSj{^(z5y+ZxFiy{aL0|B);j=Tn|S@Z;p`L0Qxf@_e$n zIVKujj&TW|)EdZw7$W~GgKRL}^#LQOb$?Q;BHiPYT2wq1Dwzn1+Q-Q2Wnw1S{c#kp zWpFu=9e7SB^c`8>JnV{2%=T=o?*CHsh3}hlh#Lv=M2epBBC(g~i?Q*ou(tQ7yjZy~ z`YPcmudrGy`YIsXKqyY_A^O61<^AZ3*`98!1u_b6tQ9c|8(o(hYfaF?E=fM+#Tj2X zfjm=&%{zJKi*BrmW;pOD@hLAZqT<-j$R{rv+x7O87dJrOSZgJe*XZ)b+7t#B<|!{S zcw>z)65FvJ!c!C5aUbE?hS^o9fQ{`6H8inZM8imI*V~OXqhY0ocO3W{;>Oz6)X>~m zBZD{A2qUqbXc)b*W)?(TSJM0&Ys{M)YeSK9x&!60nD9;n3>xXt8*73;iTyKnV~y0p z8*9TsvvHp^Qy3KVbjO8fG{*QE4{vtxjmM3(ZD_o?u|@`OtPw`yJ~2LeW6c=Av?%WD z;VCbw>*SfnZ>$-*89&b8XxwLbrjyxDH0~3d!%m&e|m?B#xqFW&L{4FGB+-gv95$@ktdjWAR&)+siY#BX&>qLyn z^S2JftSA!1v9BQR91fh%T1DgAdk~9~{yJckUJ2ST#I)n_iNw9o0&y?GA9G%pR{KNV z783W41Phba1+ednSPccPf_~!=`_6(sPJT3){%x`_=C#|$ID|z$^B=)`BrLPfduSaH ziyd_=L7qs*F@@hWC9m*Yj@tOAaJx#RHU^YM(6+%Ro5Q&_k|Uudg{8apL6vWDICl!F z&%KJC`D!Hi_Nw_30F_$1IMC^)+Af06Y{wM5z+!qigU-N|!kD4Qpfh~IMPxAk+ut1+ z2emP5>k;IM6rJgj*h^Ho<}*E3E{rNmIMWNO#iGgrvJLR!RNHsa`)}<~!rp&lwx=__ zKt|!2UJ;|P(RDe~8xJk4p4d+O`){1##c>}Mz^f3ccL`^D+yHo{w;`eYumR8Xwq;;p z&h*IOnI2&z?qj{+OixxX;y$yMseq093N5;)RJ;F$ACk95(^r$FaEQ!?46_?kn*o1q09R}5P@=W7rdWLSs zi1RKQ+ZmqeNVXG=?ZoEd*e=vZ6rAaaoKl9Eaa|unY@(jE8)Bnu;XvcKU)je0_I#zpvqXWM5Xc0fEb4)FwI zp2dLCm}gITY{ooQh<(5cVxGGYa|{Q*0Csb67e66kC@ZB(D@=W8QiJ_Y@;=GH7CWdD^lI=u86R|mT>$hWMdAl*J(nn|#9~4%xp$XNn zp$X+PG?8{pXu^ViXtE9RPTr(aYo&xHh9GrJXwr+Ck#eC8eT60>r<5UPXwt_Jo6uzK zhS(@uIM6%9LzBL`&W0wG5QZl4L0}s;G+{OfO~e%0C}N>WNVcI#@Sd)Z5uh+O*%NU= zG&ZTRvB~p*Uj$&2Y`B)aH7Gb#js%pq5S3{!v;J7>4yzu zFl-=U)4uO4zVB%Gt0%WR>Dm7&aIKYrTC?-x`RpVV5v$ zAcJ88VI*u21EXOB6~(V5AhmO)&#-~&I(eq?u))yH7;)Z3!v@1M9m#g0VT0Hlx?DeO z2&?oFHpB;oRczQmHEh^G`3xJR9TPUNAi@URG|GB=B9C8&kW^}!u)z?djtLujQ8Q95 zv>^-|n$U!u1NJ_S$SGxr88-AW#3pQ5yCF8p77p~T3>$_*QS*Y&zPiqa4U`au4e>!> z8#ZiUHV7NU6xk>cHZ-#}dBJB$&bTe0Vw>{MG|sYd!zX~zxZxJ~Zk}lzRS-Au`RU<| zBLFvy#1p(?sEl;jajq6I9ja--wB9}mM zO!Zk{loGidfpRu-5m}|UHAXJRz*_G})VBsAa@iw{T*zSLLKul$#K36eLPecCQ#)7s zj9jR$lV=)_Tnyce5$9braxpy9k!&X#xroi7*Y_iruu311OMFmR#YQev!$vNY&&WmE zF_8-kB61lHujL(zypuPn)LJPA9)=)wOytswnvrs$4PoRm0!_pt7m-uS5HoV=V~9=U zvUWpklr0?SJsG)-grX*L>8tB(&bXsN z4erJKm!GfR7rG@}mo4&rLS<@-R%(*OEk}WcxMem#zf{K|sexN8N9>b!@<)T>pRClRBc&J8Gi-Hyau%$8T-vqigc=z-m!%8Q}8uO$DP5Y`V3?{c`|Cj zB3zxr<(2uF1lGd~RdKf~+uy9sawi{YdMp^dHa$sxp`rJt-cNH^GiWwa87dOxKPmgSWoR^Who$CePzp2xj`vhqFcdlQNlg z{x&yQsFPz;FZ4Sr)*Awo*1?~L7qra zyhvho+1ysNVt>m9SMBy|^7tBj508YC>VF}RwF?7AyiIaVU!D)E#RA3xvW?y1RNJ}H zfbj$WP~mLm*)-L zj1lKuG+;D5v-sIgG+-2)!(ht~7{e-k1dQ=PVHF!NQVkn0Qa%GlX~zVNEQo+{J$OCu zWaOQ^Nu}0GnB)_r&O1WrMNLz&fVl!S%$MoMqX|0)>`|8#EoF!qF!nLTCSY8?-JmqmEf;5`e$9cgFji~meat(Bsc@W#x0*ghoA7-9kjVGWa0NB!R+a*i*$Ax zVJA*g{qMx_RK_p=kF|PS`D{qSe)21}^OkHmF8refv7 zsH22OhQn&HsH1>v1AsWShp6K$C}E=xW_voO3S<->Qx!1^8(o)Us&k-)ng8;JN6tg5 zb`XhrrVN|MFOMQE`XZWWR{9swIJJvo8Y7>)XiU@F@AGlh^APMj!tRAgc?h;|7}Jo! zLomWfOv8G?A(*UB#0h4#QUM#&6l!QjgCnFSHol{6dEFdH0#1&U)K{TPf=4#6%!IUCc6tU`y^+XKnQz*_G@)VBuW z5bQf)OhX0_!3ZNUjTjg`1f!z(30tH^F-;FI8KAoOC0C^JLoh=(W5ih+jcE+ebR^q} z#x!DcaZD3d=_96z4+^W;n1*WDn1=G{W27Au)36|7nvLPkymOIv@+Os9E5)4~g48iF zO)qLj%7r$BG0i4uB7O)aa!MIu#x#8lv59HcZitPtg#(R4oc7L5p{O|o>#OT*OhXCb zAy|A6*oKX1m<ma0s>;Ta!bukeuOgNI&<%iO2x?kOF_{UP!3)HQ-VB^qM(Sx zUVt;QuY?v>&&W{>r)qK7LIv=H+SEJp)KPEmG33JLdkn88 z?EVQ-zQ^#p^qIS2nd9eELE?K12_s<(>jm#Ilog1u#jHmvV8fO|4Nce*(J&IW^!6S@ zqhXczGl;bs;ys4nqlUL&KXmeB@I8ivk+4NHjK0UvOxd`uq}i~A*&u8Q6vtG*3JgDN zL2ZTnQ`i9e{E6XfP{)QaBDc`L_4ZCfV{DywE$Uli@lL}7XzWrnjh}c0gYPsXjD#>^ zZ1kOmR2n}mi?k?&>EWG*R2RQ8i!}aDLqj*?#W@%aVGPf7D%**MFk*A){%_}!$AimZ zl|Dk4_yDnr4PmH;4PhvsA&j(RLKqf|zSB@jGj!qm3Zz?p|PL_%_KLu5_wG~C4c^3MV3XQSs3mGH-n_zVUeONs9^ z;QO#YYF^g+~YG zH+3n~_*DPs;1{4oeJX3EyKbrsjt=6#sVf3LLI?ZT{NL&~b#Fmqu;NyNJdvWC2PF35 zu-5#=Usf)3SS4J=ht*;ZtAK2MN1WP&!@3blSck=IPgn7QjKZtv9$UOK4H- zus9Ej9TpY9Z>Ll5h{NjbI-9ea*V(@&?7ki;ud@&24r%TkkiqM0!id9Sz2G`qCNmtC znc7sqI;=tsjl+s)7;#v=z0A*OIKaCdVy%X_&OV45ntKOi@H(3?;;=-+=ykT4vTujovU*JU=zs@#vGe(?uQ72`1rX$%-)JciW z#ZD@$(ub3Z4+^VTCq*@^lcIb&DQU+zDHg^_FrTxYM{5F2F+2YLt0n8+7@`|3J-olObhb#{CZ*oM8% zW;SrmVv1}OaLt3zE#^8qB>Ug43GW^Jmw!{2n^x@mHS5Et8=rj_SeOLA0qE6d-vef^ zKKni}u?5^ukS9{?v&k#;*_0Xg+4q7H_1UbI?s~m9pDhCZV?O%03^w~v>!baD{XX66H--ja?nVbj3 zKAQ^QhqbA92|k;%nm+px!tT3~(q|tM`fM`jvk4hQ?<{ zG%Ueq8x03|k3y`~5I%cW=(EY7&nArcY|$|4v(1!^>q?sS*~|t$J5U@`{UI<)@!5}| zob}lvtCS6$_xp{3wcaw+w+6yz9~$~>GU&4jBR*RUjQVUUieJ7)T8hu6x=x;H+-DoQ z86(cSsLwV$(~)c^>a)e>VxJvW>BDEo2ZdFv&!!sIXH!0XwzOk>HVgVb`(fnqgWr-$ zE#tEdLFyQv-HV!$a-j`<`D~F>$`I3M_c6rAXRqB58)XXzy1-}m)pgcqQ$pyo+G{xc^!OqSS{wW z3&_@e#;HB{>}Q~a_1Vn!hQ?<{G%Ueq8x03|FGH-= z5I+0x&}WlDpG_F?*`i_8XPYS-*OfHuvzZNicAz+>`tQIf#b>{Qa@J>ytWq{~`fOuh zt@nG>w+6yz9})U&GU&4jBR*RUjQVUUir;ZYT8hu6y7=vJq;a2Z=w^&K@1j22@JvUt zov6c(x1>_b_-sRv zI>u-BqGqIAXhZ0;n~JWpMNTP0OrPDy5F4Mpc0+8GEga~AucP+Wb=GH7Lg=&OgTOYd z&t^98*&iG$P4W7~aFJEVK(~5l`mDkx*#Am+>7JT*_0KNL`*TC%6 zXTJp|wt%+@@oZfzJ*U$5ek0j8c5| zhbU)#w#X`FL#NL+2G)9iM15-@eD?Q4pG^jRHetkPi-A#}O-1qBsz^)m*;LobGmZOf zLpNi@c^CEBhG#mG?L>XH*c|#h-)Dza`taHDL17i^v#Eyl*_2P8E$tYe&4TdR>(OVw zk34=SSW>BFe6}G-9pkfmQ8Q95v?27_9hM7V&k*dZitPtg#$ekGsb_e z9+}Y^yw~lb~q~duOg4MYh{xYnBT0c;$NI#URJJD0y$b9$;EcC1@ROX9{tGF3 zU^PHzPI_PrICEP0;-{(i-i!$FKwNeOOZQ!yyEbui>%^ zgmgei=XOZm8rYx1E|NqEy=q3Dm@P|mFWkeqgR2Ne^+^vC(C{Iak=uKq>PAJi-1?qSOMb7EWR zk1DXtoTxz#ztJUW9a8i`4xn?8^ueB}EPXHo8TP?mfVK}P1AS0W&|Qs`eQ>Pp15(ik z1gmrSet_u%R)LUxAOw9d6QGwq5ZNLWeXuXenLY@~X?H(RgFfhWPEfCe`yEr3&m%vI zIbr%>AXw;w-SHb>$l;fJkiz-~fX=~dw4SwLeIr5lAf&Xu%UVw=tS5+A&nhKZFS12w z%=(aQtvBO;iYh-V9RG7K3dWyWMQl%~2VnblGX70q!Sy=l%9#_b{-`ydQy_lgIPgNJk+>AB+a* zY>+-U6qTh94nu~0a5$jt1Ij=jxCGt9k+Kiw**+i@eL%1}cc9+~tO6lNLJ0ccD1cu2 zKxB(h^uhO0&h$Y@PP?-~4f>$hc~89(?$M?!`yljrW57Zmz~{9ihu!4#{cvI8beD*X!D*RtfibmV^p+ zU)xb^-xw@o`=-d@CGbdL`{n?hL&f$JP)%$<5gFP(AJE#)+OT~Kg6>U_()JUq?WDqX zg4H>kB~s4q6Ybn46?2;)GPhZ!hq*11L_~CMht$62 zHXAOQ+s1Eg1C|-zZIQ#PoRPx1?EyMl#Jaw`Hfv*icOdAVij?C!-;OV-7+->j-(nSv z@0z`~$QGd(-_UD^Iex;p@#8iezv23uky55`%%I$Z@ZGzUm0AoquO0b4=XD)< z%;AW|l**ig-%}d^+FpCA2}|%hBcKi6ey<&IEu^LbKX4-Ot!H=Qaa;Lwa4E4*^UwN~ zR|5T7Z>VrV$kuT|qj2L#p>Nc+AmFq_Z3G-!ulfTZLNf)Qqj0UDD2wssF8IJRNc|+> zD4R!j<8Mp@6Qb(-&(7F+Dh(e1GgBGQsslsX-cV4gP6W1 z>9&$SK9H36C4ERJyG#D3b%!;i)W<^(YsjkR;U5gGR3{9-ZA?n#HR*5b$-`^Zt$Jmy zM$JW&4H^=>t) zg;tlg$%3xvbi3=m$enYT8iBAB-|J>Z2y=wgf$vQvDsuAK$`sM8o9a zDfPqVlUuWD^574KX4TFu`;N-0;|Ec~Nez^6@Su&*d*ej6pF@XAl^ryvDXVUgG8fcs zHxin(GCf1He|8Z)8<5th9c$U{mrd;9xkD)5mGo_C>q|*1L8(+Pw@~J-Eqfrns)dw; zK&ezGAx)_dAh||e1nVl*p2Kb%Q>iM4vJa2I*rn8kb$d5gs+$LsvLr!DYb|@`fsy+{ zt1BhFRr>#!G3_XM*%(T$XrY`>n_0_48H`IkDUWNW!$kfiZS5mc>UV=rY)h#FQ5T~o z(z*sy^1;oAHPoowh?O|>!Cb|iKF(vUt_D1gU&#rue~&O&weZG_G*~V8RqA+@Od&S{ zwW`#3@Xp36o~jn`*ar2^R{dqwRH-)M^;bI!@9W{@p`S#`X6;Lc6FW_5wEJnzlHvct zJ4k-4PKA`G8px{$Mw#9SgPkw+J|0bMgaU?och|DsXmzR7`$X!s0i&MhOUX91M6ld2 z)*Gj;7n#?K%njAAg}1noylpJ@H^H`3zY*SDZRAbEbv0$q)5LaB&k1&eNZC!jEV@)T zQ)Z1VEMR-R^$ytIab)K|$sQOG~eo;r6hpT^z z%#@To3K;w4D3NlMS}jr@g|)NQi5BZWitWu;33O7G>JZycR#ogWHAZ-+sGRU#8_ALj zRFhy|3bs&<5==?GGt^kY8U;I7ZLJe%eSd6zSD>f&73>4SZcyJbJT!9!`tQ4f@z)Qo zP!FmD1lvGLKBf*5>`}p1s6zzfZ?a#ZK30bcwrPskYIV3^ZwgkWj})vQ?6^XW)ZZ8E zOu;tMM+*j51Ktk0Q?TWN&D6&VHdk~xO3xMSS;4yWae{S=E~n`e1Zx#t7VG(@q+r+S zykK)gm%Fql7@kT;dynf=1iMSHSM>tH;O4;lNS`LycGBLb`gFlsq`j~7nSwnaEhy(~ z!TMosUV(Qg{z$OHMP`+Aj$n6+MFX944JI<1obv_Cij-l_g@WxPdX8~^BG~I9WxR8- zVE+^;8#|W@_K8TD=v*$?t|Da{=L*5D5h*)5R|>XDr0nWkEm)J(+snBIGvuYpNrSX{ zr)q1YnQEr%S8s>(ql#H6ttJj&`eA>j^J=DnzIXrKk-ka-`_xy*Fl`vf^yPY{HwxuB z$-gj)lv^czRMLATy-LyxB>h_p%j{Q2J=2xcaH}d0>2uJ;Z~bpAr=!IeN1qP*U1Hs+ zN|xVO((|j%27S0_ezI77VdXiXbV~Yk)kUbgNVHlg={Id`G1<=ang*tgl8;(sY%x|C zi;Rt1G_(AjIi^v~jXo1apW8(TL-}pZmC$5_P-YIe2KjxesQD?P?IlA0Qqq*9yHx)a z+`m=-93>x;^p+~-@9h8cU@R`L_$4gLjs7L*#l2yAz*rr%XugbB-&Xvf`gX`1Re9f_ zYPGy3?EjA1`_N)n1JkHXBh5%QeN`zv8TQQHr$&2h|5o8 z4j|pEf@rN(GNx;;n^JGoA3rFiu5NxG>BhsqKze?|S4>C#3zAQE$_Hz;L4x-FEKz}c zMY0;{tw~Z&FJqcb)q^ry4?}vsGaBjg)cT|(HXa<8UyFI`%eQU)hg+G17PlC=zqNu| z?G(`=308av`DU#>*vNHfEL!`vJ};py z&UPa|+9LNlGb^}Gzd;#)S1iNz_qXfe`XTYP-_tk_Ln|NDtrxVl_O?$bp%vO5wR+w9 zc}**wb28jr{oY#}Z&K>a|L?cLng8utDP{h1j(xjUN||F5(aIJhXJVd5y<6zlI7_!f z8Gq*YR^InVh2>}TD4#RAa830r*)JK@Vc#BQnmyd?=YFk2BAOptP%GSlsmUolmh8RE z`GGXQt)E6D{4(H1SC(J$o=C~Ce|jnz-E$rbWX84nT}0Y@K^e1e_${uAlqtQ%u*brA z*n3~~UMB3Tc$sLAh1SK({0_I>`M0e9xkJ9fZf5?L^}l?`o9Pg{ec0+DxFnUoW&J;l zVfzeEG=#iq{krk2h+p!%{i^UJjgPI@*p26*eQZKq6x+V8O5PSj?y~-Gj>$CO0$l!< z^>^B;BG~)=1~=dm*z#0GYXtlEs5YF}`MiE3*9)<-%JK;j?E3QE`GeK+x2$Ydrn7;k z7W`XQHaqj<2A*2;Z&}${nOhp1pa9i*clPQb!85AoJ|7 z!A(1u>FPAg<1E-&{mAkTAKu)wvs!F2)nc3>d#IHb;|$qD zeI(eja?X%F)u)0j$Ye*4Y}ym&+zNlo$~j+VD5sU!g3OSS?M*XOKfx9bn$$X7?WKkU z*bKF|Y74OSn`WwA0&I(>{nT8+&Op5#n!c;93$Q(!4p6TK*a1xktMS9w9!q||=}@&u zum$RBL{&$sWip-KDWB>#0((xd(@^rHrX$s#1^b}9+FDD|0O3o>=?Nx;4_Jk2@( zeKlhQTlhe8&L6Gr5bPrL>X_4;=BSkx+dq3=)3G=&X32|GXWP|HbJhM9yCZu`({buH z!A$EXs^1p-3#coNbhd!rfj5GC)8eKc| zcj{D&4a_zTeOaxv*z;{;hptdn>zR@dXD1GQOPy-5t($ir`o6l^V(+C78Tz5BkS*pS zHDhRg=%3Z57JE9qXz0i4Jd5pAam~=bs{1TE4$E%SJXBBRO+}gWdo{P}ITpJkdrgvx&j#4s=27}@2Fu*u zZ((zr{@P+o`~47DVq?lYBQpm(U%T#SF%LUmyRNfXqTl(=9lFtCxqg=e8)>m=Bd%{A ztH)YwzY#Y9+gPw=`u=*Y#_1yjyHFiC__pS8dO?8wws}2$v&B}`Jk&g1D{&vjhV^wO zz@BbiUyn3c=D@na4HNWO!4_n?>RN$qYB)My<(-qOQj>Lu<-OZl-7-Z_ zu-K=q^}x0?n2hw+dfNbNY}s0O*^(DxG`H6$3AP|}B}Q|5eVXN62S2uh{*mSV8h&gC zz1Z@8T)#=nj(Uk-uYL-!>nv|)@TTcoEN>Qg)AU`Iw`AD#mYwtimUrE-y@5S$c%tWY z{d|BO)G}SKvh~<6yXwy^#(vpV|I1?kqEFRjaxedkOn>ytZo1N9siyAq?z-M$1DmSU z?z-7v(%v3=bbuYvvWK2-OR~Ma^$d%#y}k8!E%wv4u9kiDp%%Nb?F3-QSnL-K-RYV7 zc#GYRm}{m!#bP@*dM*3vGc9&l;}3wHXE4!aKYdAnoz=3RzTcKSytzC5J^h%)<~3KT z@9F0(wkKxm0s0k-9f;X_fPULzD=~ft>JKgU3C8b0{a1?}KD0Z1kp9wQCk(B^{V^?J z*azjG4(U!Gtjh&kka1wc!Mes`Zw~)?>JUA|Vjm7aujLRu+|<+KTW?Fv(%T63j;?Oq zM9tDW31-&AEWKw8`%Zve-ZD#{YOu`k(Ra5Tq0h2d$LOWN&bQdxqwa1wQeSGZKaW}p z>}M7`WZ2y;N9h|aHgDKcV7FWB+1k5XzOR34u@$vTfjuf1*Yr~@v-O(+w!GzN{iVe! znqO-Z1)NYkHnOPB62k=joFzk8|lbeTL<6E*+=OwLGrr zCX^Yt5sCo^llem}rI zYniVGaU0xZ*-*A0T5KWJ)eWox${ZFtzTYJjb0 zv8U@Yz%~`^qRjC2fvuk2%GAq@Yi|Iyy)&=?lgJs@ro!)w;{={ORw(bG!AA&7Y^fG7Zwk<>Z&e9tM*uJf2 z=>rTVqj`=#Tre}5=jb_>$I<+;KGE_xnm^VHERUmku0GrHIGX3`3oMVLd7i$^@;I93 z>1!BZfWgqy-@Q<^600R zwjK+tLNFs`vF6-^=j0lIJt&xI?_#~e)RXou)~f>SjMj^F`Bp|x_RD3u+G6aN%k&V7ah6}MhxsKj z%P-gM7UM`S(HmNfBfUgV6wI`Kggg6+ikRp|y_dxn zw!PPSlm4#77Pb8m*kKmqXx^-k@#|qUZ`LPR>{osaQ>0evyoBCE@zqQ!n+D}?<(~nr}n%aK= zd&Xi{HVtn0wO($qdz)H;trX1k((QWs6oo&tZg1BIhS;#%^-_aL#CgAd!eWd#@7FI{ zjJ@=LUSToz(gXTki?Np;)PM5pp_d-ipIPid__3w>pB8&&NR?WulUs`}8TQ~qy24`Y z!H0CtV(h_(b(6)|gAeOb7Gn=SqQ_Z`J@|;;#A58hNA*?~V-G&6cd!_H@G-rc#n^+7 z>3uE69$cmmvKV`CnVv0}>A}bKUj=(dZ_=jm+{emkwBa3ncy2tfzgmpEC-mYyLf#Yl zT8okQq+YaV$a_*Ru^4$z>9b~pyr=Xf79;Oz%~xIf?LDnGwHSHN=zER~dC%x4EJoh5 z`oLpD-m`j+#mIY34>~F2J*WB1Fk2w+d0lmS$a`M5Sd6?E^r~}0-V6F0i;?%DKI@{8 z_oBYUV&wf!Fa2rA`<;HlV&uJ~PyBhvdr6;VG4ht{&wml}mh0pV1|#ofee-Q0?`3_T z#mIX_pZc4S_liExV&wf^Pk1=w{a#PC7EaQpKt4mKZLxMy5fUS=1SdYG1hxWSA7`r-q9@H7W4#ac`>R6Uhx&7i zk@rXa#K$4;kNQ=Mk@t~)^plYHkzQ^w^8Tck{w3u7Nxxt*^8T#v`)kPivwp^68 zd>ZojG_h8T2ltj%RpF_MkyTX=o<3li+6KvklCYHJb^QMG2S^imPNAwQDdo%7iYw9} z6LqB(UuJJ~ww0+>c(VgrL|drKJE+ufc^x$z-5jk;D@cJAR`Wu;sK28gY>d{Tw4Uh2 z(oD&y{NC!4UfhT4M(KUj*h(qf7jZ&~S=~(AP5$RY3iIS9Ecd+OA=l)iTvL~HzkHO! zl1VG)T-Rt=I10u6u!U&21xC%EfuuO-LrU=TGHOEcC6nvVqW^zp{$I~bGcN4^gsdR0 z({Q}vbXmWV(TsD~zLq~Ld^zE+Qm9qwC6lt-l=W%__abt`UC3{XGjlX%e%O|wM784R z_+?B!oX?cQx`p%K?6(g#hLU|sR5DkJPw%_rnshL7d@DY{9_#P_#?sPS>1*X0IlZmx zZ^Om!hoc{Uh%}+@9Krq>jeKc4YLd3xrs7t@GLN@Wp9kQ_lj;f)EV-D%x*LtAKL5aqNT}0?vF;zRM%LVKVHx&=BYl_<>ypxk zrS-Vt|JGdLv1-~Nolc6T1>_IpJjT|%B;lRmbOyd(v{U;5YG0JW_p($o-axwmbbK=jsfWH}dNxvxv~$SWNJk7g59#ZJFGl+L z;GZJR4!KU9Ev=lbmbToC9%cEfg)&h!R#3ueqkfBY-l)gb4MLwP^m`>=AvRWv{?paV z^-51yi^pV1;}&$>@W2Fg}%Q~W@&zlWtQf* zSY~P7D;uGBS8RoIbo*~XVScvMnk}_vORafAnJ1KaLg|*03-!b?N9*;SP1@$A=Bur6 z_u?I=rD9(C9cQC{C#FAg4#WB8B9zx^k#4Lw6ZGv{&P^{+zXbh7=Zqm&Al-cQ&p?^f z`ipe6X8FZZeu3I+$erL$8T}hjIFlFalg2Cs<|t+O6$ZEjekK(IXZFK;49KgV2jFJ3tI+dZq}c- z9j$MMrQNUi`pB#Q|3sF&K{X#^)VImQq$Ew6*H0N?0Uy} zX3XqNdE(skyv!Xa`J>EzD0yY(Q7QSTjOIIzQ@=DbUmsulMCLZ=U!~^j9mYJDsZQLR zUY>bIYAu&qZ%C~-q}JfX%+cRu&ey#Ef1CbuTfg$w#H7}m^4s*%F+Ie*9bcgybOH)xL3d`aJz-rFp(bj+;s%@SYazF+>n zlw1Y*p4t&I&n$n(Sv2~*^66^(p%)>2Z?uP`^Fwif5`1KGie9Y#Nv-8Z3A&twlmyT8lcpl6JE z4XNpwV@JM|JvOm@{fF5j6IbOv$o7s(Jdt#MP{SO93e8hrF^%P@0Ri%GP@Q^`3@=HA>}7X`Grz`p_E@J zuNB4>%nSt4?-m68jk zwbJ5!QukVEx6a{M-zT;1lUnyltreQ9W3vQj-3rZFv_iip`!HwG%_8#-k$IoUTrM*2 z6PY7K=5mp_Tx2d6nU6}XXQbA0skKUKEtgsoq}D2_wMuHOl3H&_t@owYDyfwe-BwAh zsZuK`8YZEkr;_63KbKnHNUdaoGrUo1B@>+CGo)6d)M}JkjZ&*3!O^KpaC91_)&!~5 zD7Ct!)&!|FL26BqS|g-Zht!%NwWdq02~um3)S51}rc15qQmY2>&i~Wio4_|weSPD1 zrs=+?E&CEE70S{kEiEl;OIx5qp+FJYY(pC$(v2jAmNj9MO$8AV1t|g|A_8tGixgQD z1qB2}Q7p2n2qGvd>i>JsOp-~PqW|Z?=l8zP=WRdp&AI0;=iGDmJ2Q8R>Zw^%!YIOM z!eqj3Kp(VP9wv+EY-R#IkmwvXsa_C!kWB@SWV65@1%43AV~arRi7sF(z!}G002Z>> zz%L?xDXRiKfoKc+3cls+25>6#tslg!tQl}NORleGb12L_mIHb|(Ti9<=p~@lY#HGS z!c{;YR!Q_4qSukO>xr|Ga5LfCgu4k30fX3KR*W={5Pg(Q1AUC>6KoOalSH3l&w~D( z=r7qT(6E|q2j?tt&chCBoOQudy9{dtvF|DG*D2RO68|Rbpk}v-z6~n{u{&%(Quu>7 zOgIKw5O@kIAqVOE2t230;HX(3VFY1A!WM*4Kp&Pv_@H1y+){y;h(+K!lnd2JXR5$u zS%v-Fs*n=G_P z!`(zzQJVXaW)SYz@q8U3{$Y}MR1g~k;l5Ka@RZOD_@&UUff{#Xc!VJP;ghhll!exZ(2@en+B0NHPh43ojkA$}feLblx2tx@Y2pbaW2ongC2{Q?^ z2nP}lAv6*e5l$d1BV0nbjBo|vD#E>l2M7-l9wEFy80f{d3MGsnY)BYI7){uLP)BGW zEF-KSoI^OD@KM4ggv$t55UwIzL%5#sB;n_TUlE=qyg+z`@G9Ytz!q!@`kxr)PZ-8- zwv1to*&o12)+90pYvCwhJR1q@g7ar$uzH;h?8{yT4rV=D#jp{C`K&+a@xW9{Q%`6k zTtm2*@GRjuk|+pVdJDoxf$NY;w4N|uc#Tyh+K8S-zH5lyOL&&>9EA}?o{opeQ)of7 zUfjukPOt&J6W0KnB(4?r!S|f_Au!T|ryT9EiS_N2=D}lSf*#k&2%OVtK5#>)jllOh z9RgnIbdJJb0j)~%Q1S4-s!dFj6bTN5zZoW0k%ZCUywN$0=uFU> zqdP?4-3sZv?$AX&=#tK>H@2Bl-&HW1T&GxGY~E9ygNcXwbiOP9r)K zv@uCfbUvXG98Hpq=vjpGDQ+dvYY5j8ZUjF&sfy^mg!>2&fxj-P+Gin~(dsO5&JkV# z-AmFcZGnNqNNA6DOb0 z2>!YxD`M@8vXZZj__GM-!`C-?4bf`}H-ckKsv>$X;XcAc6tbG=vxMgeuTXgAw~$5N zC-{+V{dmjOfV1kp7Q~4LC!tFUIKiz`iIWMAx=S87w$^&$7{STvVg=`V>-nH3cBuqi z+-8m6PBuJoo!=~!+D7o#cBumYhc{1O*c84pV*LGn6@a^Cmz_rx`@RDs6K+?ha zwMz?KY$(JXKwdo-2> za#=#)PPQyj704xOh|>a`O^GQ8^K)zpaqvgme$3~n=qSp{z1>Yw-RuN|}ajJVHIIDA!|x$5~dL55n2f=2{p}lm=wY)!fHa+oZ=GZHRrOdgq4I$ zL%xKSgjIyqgscVm5~dL55n2f=39ATGTJn&2ge;O`5vCC45mpnjR^&^VLYPNrC1g?L zOPE5KM_5hB?jv8q6v8}0D`6#J6=5|YYfa$^QwZ}2t%Q|?RfN@qtPKxuC9EW@BCIB4 z(Uclt3Sl0hm9Ubqim;lHwWaWcDTH~1R>DfcD#B{Qly+;mbiyh^)}C`x2(5%wgscPc z39W=xge->mgjT{TLKaJWLMvevA=46{&`MZE$aKUfv=UYkvN+-sS_!KNSv>Ixt%OyC ztRwLWt%Rpp3!$rE5|&{X`D^%RIylGAig1<62BAcc_e%E^BCtb+heuI4v$kF zw>*4R^;L1IUaA6>O|?mNRCQSu>>1~oR_F z+Y@)ayl^+s2PcR6VYey>dsU%KgFB3^SU8Jj5xDPFk7*I2BSIvy#<)w^6n6!i;jUmy z+!2h#nyMA<07l^s;C-ww&NuAO+ThLPXf_Ow7p`uk!&3{#S|$R$BRS5F>;lyLrvQ64 z;n+8vqgUH>pemprFsOA7P#ZN2_}@=qUYm!Ij)eRD^FiB4dP9FB=#8z+z=`2pZfNsz zU@Ow6VF1^vRRqUPgxy-&K(D2^Z<6L~>&*pc9O1^6iyh%ZDSYFm&J^~veFnbU8*|RX zO;!WTn{&D#jN=VTZAvpvdr_G0BG-Y|w&qU&T)U5Bc}tF8g>kH{o1~AV!|7Jr5vEnd zUSM3igTQVrKe$V*ZY__(cYljdf%g3JSjse|6r}XKwXEjh$$E?1UUbA&M{^s#-i+hU zHXK=fj@!e&1MY6hY03V|SVtT2T>pJsUROPEi9mjN0#*3#iU`UV=*9fu>kSl9mji*m zEEpU=pa^a#=m4MyKYli75Kx3)1d!iV7g38Ff*%DGQIi{kZVePso121;28ygLYYw^{ zP(-_E0lEWF#GUp?(6K-fZ6yk{4k+S|du!0~KoRXH8gv3sL_2B+x)V^u-S-ZllYt`c zs>g!v1r*Vabf5n_eJ(Rv=G=@pvZ8i0rYyH$X-MX7uZIi z$X-HA$CFAxk-dzaYk_SBitH8WE3hp@)0`lh-Z+sK=S~7qw}pkE{eY<3 z!lR%AfT-KTO8v{kwTv!fT0~9ejtpME;D6&Z5 zSs*aEscP-H!XZJ<+tB1^|knZPoDBI_l*0lGI3&uR(V zL1zL*cE9j8=)ORa^%Hi2&H|zx3A;fL0E&3KcMs@+K#>g+_JSS^6tTO%5A+bAh_`hQ zfF26;M2l;RzTpKS0WJSkF$(y)*cz?&P0;PwTcF#s9iZE@U7$O#cR+VwRiIlb0JN4J2CZWsf!493pySwa&~fYp=y>)i=y-MtbVv3D=#K15&j!oy@L-?#yn0?#yn2?!tZs-G$u- z-Ie_Yx+}W_x*PiwG+qhxXpLuoM2{$-3Um+V1-b|G0iDA9K&P+((5Wm4bSeu0-IJ+7 z_hjLq(^x&wX{-V0bk+zoo^1i0!J2{2U>eZ9SWD2oSS!%I*?pjUvo@gnu(qK4u=b!c zSq$h*rUiXJ&VP&ob_Cs*C4%nDl0f%kok90wT|sBD?x3?+3h4fu%6z6585p>^QrQx}wLKx99IE?CzQ2Io$IR&nG;$cpmXQ;d#Zg$mn|^>_ZIJ4-T^+X zd}jGP<+IV}OP_CiuJ{b|o#Okuub*EdzXtyI`TrW=9k?cNd*Gy?g+Ys zZ85gC!_^+6YX@907++&?X>sXr#o>y_)e%<$u0&j&a3$eN#?={D7hGL&b;H#iR}YNN zDY#N`^~9BiD;-w`u3or$x!>;qiis7|x?o)_3?&)sZ-=QXy|^H=sG zXy$bcr)?f%TCdZrx7RiHkXL=-pqEX^_pu4D;=1m$R`B$FL&)-7E0}z3!dhG}oyk4`?WUitB4! zR|9aiabUDK9oHkcmIbaAHsg0ct|Pck2X+#3f;x$#aE%XIE6fbaz!WG$^u<*_c&*Sj z*k3dTj}rgHu)EPF;ecH~n zbavT;%SM~?O~z7-v81@pGaHu7)3N?#g@yXjg`CXHC@w29m}FO4N%0utSZGm@qc@LFouoHfWFOLPKq*3U z3!$V+ONz}r0bWM#_&fogep*Rkp&_3~f{Rq-K3N9KxRQdNWyZn+g9#oEapbZqWhvo) znS%|ciN<_`Ly8$pnU_{*G!$ESAYO&=OI1m>blv3`$GYa4$CZ>77UY=p`37DM!Qw`W zV`T5bGDEiBXv&LYndwH-UT>;^ORlNP+Tt{OJnP!qVEJ3&2$nX^kUze^zQ~X|QEx<1 z7z>S-3P(b52*I<%tC@ot4`!~hcw$LDl|W_zR~oz;W$!kslr?x|mzl;I{#L<`EVI~> z*b(x^p>PKoCX^Y>7A_7fu9uvELp5E3#IM`l2+-3o)>y2R?}#1;Us;k=tGFoeBr%R) z;JDWJI>jL*SMzTEZVRB!2)aaQXp-!JCSpOA<2r&XS-;MR2w^YCyM=Mq8b@w*o!pqL z&NO&vE~rKy>QaH?5GL1b(Ob&QX(a_z=Q+nDH)Tb>z?N)Zr#ys!&JJbatV4R8Dd>{e zSc4^ZNKUULNeT3D+@`XNdKZOCU`wL~2uQ9oS$MmxWBAaItfI2%-nAdEJBlOUaY&UL zP}UtTNl6fLv&_%O@ReOsXw0vuQ)joK9WvmXRZ>t^Xy}eFeN5D&W6I5CgDcDyLlH&@ zd*5n~>1`-Bn2h<%eLG_{su<(trEJIOP>TylD06LP5>L?<*&u@+A*HV)Nxo9yD=n+! zyA11+M=d4Y8b_hDdw)eH+y`*Yiu*8ksp@2ryIr4_vqJKdj~KpLe&s%%wU4BD=(F8DNqM$T9juakMunOtz_nH!wa2k%uW~ z#dA_}J?GhQGF^+cre7`VI3qfP*3P{Y%582Xud(R!G7Fel`r)qB(o*ye@|aE@t{lCK zKaar`$W%-Os3TR@QCUC@7LPh$^uw5o$^H&UiJi-X&|FgvVW%hZ`6qbXKgUq4FSaM) za9~Jua^<3sBT&bL>8UhTbNX=`)a932APLJfXB6`ZXhH36P0=|hJ2OU;)*;1a{TRc5 zV$7vWX_Y{#XJX*9yK}~wN+xBFNz)hS8!#D`Cbcxtfw0v4{F1U_3!k9D(E37S0qbv= z)VmD7T`}<*pPSoLpFbWShwEiD6oThcVzs?p3!=8ay&!7)$OTZ_!*2N6K6RM1c0hX- zuk9oCnizEqwfzQTPOcy8#zS7G)s6vU8cHqw^u=S#+(uMPgE7d}vMu+n%}qC&OAGZC z?mcrVO5H>moIlRM$I$|5f`A(7CRx6w#8M^Qt*=xU2VTMg?pkVx>L)KGYWp~P+S*?H z6Nl+#(i*U~uVf!GFFIz6wCbxJEZyK(Y1j6Y+k3AP6N-3zMsdEWg4X1Ww60w;h&SN zEf)6pX93YJ3$XM+nr>3b#DvfdJKJC?GMf3mfg8_$C1YJ`iJKsf%HYOtup!@Mu(f)gWp2_PJie^9FuD7w?a@nLWGt+x#n0B8%mzjEtB|G+eT~HhjMq7;A>`tt zqO>_eJ1a6d*n%A)y{Ui|!`^m!5UhdC3zli`$!U;tICx49he_UAljaJJMIgyQ;_{l1 ze4V{N%|;YX%7wy>(nq22aY9a(h6aiy4-?ER4Hx7uj}YWUEmzw7*~?<5sBAP#daYI*AgSosxVvOo|!bu&p~GlN^7*jI9^flXqImt0SK#EfaBnWN#B_HpqL(8X}r@zO5R}VV=Tak z&?86qD9f4}6U~hwzMs07! zoWkkJn{yUSVlX**To%%rh~ZqxmP}2F4>A<$%ZW0(Mw6!LPM$sIm^KuY#+yV-$?$0y%QR={E&1c1bAg%fyHE!p zPv0r5ogOVs>B&EJw7H}Z%?}fKa@%M16v5%3E}sYCxs}(u_87|9KKZ*aiWO@C62NbZ zC^}N<22pm&B!g-2I4oP`-rwxJM^sQ)$grj@F0u49a6`+5#Bxl=B9?736dB8kkY|8$ z<(pG7-cZc)6>DLMGuSw`nDmgAA*8TOme9h4-CtrX=F4UKyjn4_;Zhv^h1@anxq>TS z9uQrb($wCS$Lpzc)kCT%oZMHgq%JdB3Ri~*RcY7IH7CTBdHYI<(sDQo<@FOxTY>Eg zUWYJ$M8)Rg0(wZvZuYsIWIBh-G3TRD%2gEwbYYBEthwxM&R+BFEnJd_Jqiov`TSNQ z?;K)WeVz9iY2x7OX>U=6G4jniQcN16YAonTL-#(?2v#$ET4709K}I>>1>kl`HI2m` zN9?YkdOEpI!#Q~_DmvLbZ%)@>gT?8ny%A0MP>c?wz0zIaT#YL7T!5|uGYrK7RFQ2r zo>I=;c+@Bp5+PM@N>C{S_v5)(TJJJZ>8=J)Z<}}C*+>SFb zsgvhDhGTF?7hjT;sMYaV^I#0DP7l|)hRckANtM-PDlxh8aUZ+bf`QM19F!Dd`arg< z#Y7nv3@9$FkR!XszvaW32yLMc>efe5rJd!C8Qr|JIbs# zbHnf-Gz$L1D+oEI+ePU{{n%n`sT=bVLSorF68lsWO^)AcH_H=Dlr8VF%~XpN-8{BP zDE~EBdgnmEL-0;no}t(yD4aB2qL$~6Q!u5RV7`J?lY&idg|G^RU#Vl)hA&>^-ggi- z`XmLE8#hv!DRy#LzS05X(ZocG$oF(80udJO;u&)3lwfDt)S+@DU`IJ9VwD8QM|F}jm2gZ6H3?Y*ncrQW(j6S;w0S^T>DHD)1#O{ zhOuRZdQ(PusR@$~3@DPYZ09}~iB!7f%?Kq+Q7e>eX-7-R!IqWMS*j4jOSa~OL8>ve zxrH@%+E}JD|5UFOPBRi#I5TV7%eiIbs0E5n!``&*qeYA~+n3B_rr?1$?`#Y*2f8aN1s@!oTUs=XGRU*Y8J7Cq|38Zk*2`#;?$eIp4V#Za7$i9bNiyZO z_+&rcj-)0}`IJfL>eHpi!WI{QN=^>s?5B{H{Q){H zHbF}L-CjGT@V9|@a`LQzua#LArcgw1kJ>l!-A#%e!HG}|CZr}-pri@?g2n)2C?_9z zLzaB)w4-0PGYX`gT2}jE07|20NkIiAKm@luY9QmYTmCzwc#=$Usd#_~dmU)v3|nNz zF%^`6bVq@bkV$1XnSn`Z1;&Hij0t6!{8%d7KWf1;ib~1)gXxCvDKe@Pc7K#LkBgw-?uqd8C4ChMU`{0B9mT zODP4Ok210hP6b2wQqqgZ#kMf zj+CcZ(p;jEqOUzq%zH52jVfcTg9T@caclCkbDXx1!IS%?;6Feb*)7c?dET%c1a2Yz zo%zgx2IIj+j&V{UPY?F=zy~?;Vh+zMw>h^Sx4Rj2=AY?qw}?{?^3YsQnsty%(XLxJ zyo;sfZ(@1$fMgs)@7)_^lY<bwr{TEuxg zkJzt4D5-u6xdY@OR zbEmd$_3J$ZY3k7~3Mr-qX=o@F-g0@nmFnqa*>@cM@|4WbTWT%5MY4um({kvNE$57v zS~1Fy*I}vr`pY30PAag6wuhR=SfrFHZ!IRWSa1AtS1I1$kXjB4FeHse2;L@) zRDMz$q@JT`8o0d8@^l7(9)b|OJ#sg*o-@}GnOD{+NVM*xry)e$rjX*-?Qb^=PvyVf zP@HC#5W^cg<}0GZ{TMcqY)g2jOnZsWK3J3BCZzIq66ay@tx<=rsvpqvdQ7M(el zUX0g;c=aC#KVGB;6hb%XWI-p^0k0Jafi8vPpN)!=gYKyhI`nje=2f4H4XzBlHpH8G z1~qujXN_xj8-1yAqw|hZrtH3Z#aL)-QCETg@2L*4Fuv5&xf@-0rLWtJs3bUZ4|Y^P@UC}SwH;WV{#VS3iXg@-##d@D5V(&*U_6W>zx0d5$;U~g17qR z5kT44(0Hs%|5NJmVbb2}3l!5E3!*2ia;8e9`-#_`W)U{0B4e$s(FgHJ#=t;4@OgAW{o`od?> zG^>t~=4Ul#jsyRD)~}f#6ny6?uS%V0jPM)pLUu~5Dk(>6Ya^Cef!dVcmlm8F{X@LtyQSkzv7 zhFPq=f4cja;+Vg7P=+5|N9XGZ-P|79)vykKES1j>|K;QtU$*bRiuJi_uF!qVJTy#D zX#~N?6A&7~$sn%?b&;SBSK+9gGVchr^-(yy;GwoIk$%>A!pqhW;f4ue3_)y7`7eSr zRaQb>ZcV1fv4Jxsr-uXI=Y@NVq1G28Lai$hYzQuJbAoHQ@vb&;pgmVH zq#5({6A;aZCpZw9qEue45sSjS91H;l_?(r~_Tw=mF}{e-J;Ip3A^;2;#zMGSTjd0~ zN<0Ktk<*m$RtoZZP4?@dJmy<6dk9QCFF@&_xNlLQUA6eT0(j&q;;W6`@-IcHqA2@o zMcGgM_Z9p_N_mSY^7|1y-NTMRlnv{=keUn%e3$|sb?bMO41L1YFTF-_rBgB|$UdhW zLDlJY6T&D`kW-Z1FDZ!HNU^>o0o9IJq-kLd0fiK_ngpD81XU*~1SC`IvMDI|_vClot>1N0?53-ql#QF@b=%cT((yJ|K&pMH2xt=nd4=#n(6gKfB8nkZ9krF%JSx>6TL3q;q7hl=`8!&XRKMlcWu3>Xqs?Bi&{&++pB$uP z2n7n44d&#B*J!Kh&bCUGM;4OKwXrpDMt9UKBt=DHYvAutSe=dz5N1#3%?Vad=Vq`q zkxWC(74}$7$ePgc`90>4RT%@L`Pir%EacJU@I^49up|m=eaM)C=rs z6iDu=cK1|R3c;fUbsKdXX~>d(Ij7LOzK^Dzz8j1 z1gzjgx;mA{>S@%FH=-O67PSpRDJg#%s5XmSIIns3+)4ax4!%9BdX*3L*AmSPlky5t9LKf|EfS6a??CU?0Sj`-|Ov8dM2b zDGarP2n3ME(F5Rd7TGq?PqdTHGBB1_}qZ#w?6N2PS9)peT za}FutlhV&_A3ww$N#nlSwniTJeKZ~@Qq&EUDk^{!^cYGDg=x3n%Pu*8S&@^MJ9>Lz z+JinS$0?Qa>*CxCVRoG$3MI&=D|QYa36&wZ`+&kfT(+Du2BtCYn6DdoW76<&=%b}- z_AfLe-jck?Y)!n-0Ggl}aaf;iGcT|p{7U6Fp9<^^FNXH;wp@sB+b#N*i$&j3SoAGa zN>ZPy28LB$RLG4z<}R0*yA&~Z^UHL6_Hs8Xm=<)#q+rS8nG z%zhVT_A8XxuT*Byzgi>ENr_azi;5g|SDwB(it%0- zBCo%8JrBF+d03(6VN8eQ7HXa6D|a1y=Huu)oR#vZODabdsT`&8jhZB7EB${YS0`Nb zIib+!gtK={xA%vbYB}i-#CPr2xNN}=m14AFdD!Pl*r)KNW2Z{+QbE>3Mk z+ooZO|6s&7@;-^iHd%C4UMi_1UQ(FvQb{G* zvv}Dh+GRzw%l07Oy9D`O5#)P&kn1i%t}B9Ew+FfD66B^L$jut9u<(DxUbkKJxvkLW zb{k9^FsR8xonyS`Ec;vlH0rdxCZiFNFXW_o0{pl`nk2vxs+b{gr}a)vjt$!>DtRWS zXflenfkkJHRBS$ynu{bg7bzri+OEnXS2by?!r`Y>bCIinMWMEUB>VJ9vW499I|Mo1 ziun=QCD>&OC2f1SgyG9o#Uu*pD{?2N%NMooxZ#djUAkioNOw(-I~DTMVFT1D#jK7t zP?RBR%<9r>P2ke8{%ytU1qlV(GeD%2l$r}d#~=xkwqNW%d=Vkni1ZLew$wL&P0++_Gt6R z?xV^r1AVlc2V8vhg;%cn z==LN%usN}Rg0&J)9x#=a;c#V~_b3A39yB;rhtsI>Gz$(nzO(p}IAiQ1%_enz{LK8M z_nV#&cNpH*G|d~<{i*#=7@Eynxwl7n#CLD>csW$}ivK6^2Y$$FF}B0<2H)yld}ViF zrFU%9scAb(4h8=)?6DJHB%JS;yeK2h`|`Oiv+oP<_R67KPt7V>{{An$vo9;`ab7%!l98;LouHC~qPKNY8LdPdNk_ z@fZw$2*kvL@#i$`&p$L#KElNxOW_ZE@!P}vp{8(208gFYS&*K>sAm`F$_|%q=DRW* zDK)C$r4;Py6~u4(I3L#XbMF5K@yCpK#`rBQ3k%}OE1Z+y!*4-Jk3y;Wvs|t$AO6VD zSg-@6=fI4(k5s_|_~UQX zkli?vGe9z+dD6ZQc0hu_eGr!gA^G+X+@S^XrjR-tj;SgywRIhb#ddZZ z?y5wjayj{~A$;wxya@o$28e9%N2>OX5YbEI5l?d1%{}bvVy^w$zB~!qe&GI}^OWHX z3b3clm);~s(fQ;A+I?x@|i3*CjTX=d~RAZYM~-(p)zU`*XT((ei9i4dy3d?=Cb8})H;u6 z@T$Xek&CC~lD9B1M{q`T=E-q8B)z6dC6ysk%8)G4nL89iVa+&&cH<^dPVBusHnP;I z95Og$@;xJ7eSNTHMuf}|?F^9z3*ivZMB2Y{*dCiM_F5EbXsYqB4~&$f91O@#-)0)x zl#jk4TOOyai-Lke+oMV;14KF_%O!xl zN*F>Jre%#h@%dqmAT@1**@H9Jjhr&DoO98=MUA8}1E`U5V`m682IeP~2{&{4Ih0q( ztyva)De2UzrZ1n4JAG;IG=ngcFoZC`mv0ZI@_U;B*nGmhP3cA_u`?a)OquO3g&~h1 zjf#i2dr@+9k2Ty6k0;RXojM?d(cY-ti9U)mc=w_X2nuC#-Lkt40ZfJFrw*Z-q{gjO zUOgO)P#6D|HT_p&@0B4Bi0#kQxx%SXgD>-tlL%%~eUlOlH3TtF)E)}Ot5G<%+)193 zgFFkOZP~u8+o^rM-?W|7kmE{ue~Rz(Drak&Y)n_ zHBMrC9PtZ+_$_Rruv;yKDR4yYN|C$TBX>n$+;~7O>cd6#AyIuAX*|KBG;DN}J`_K6 zXClb1rOnf!rOi{iNyCS2VoD*UEm}lC`sxRR)D|w_K@#vFCoM!;ye0YenEaj(x-~Ql z8%F)wNVn&?7v+rtIr3IOdE~?;v&3lnmsm7L{`OUYp@8B^@9`9B3Jensg(ao@6*Ha|9>@2` zM__a@@iDrN_$m}Wz~azPKKb3LU#){Z7&8j2pk{=B{#vf%wIy>qItSV9QM3GX{RGB} z1UBy8N#gHZ)hR8Jv3!9&bT6biUl*2gnCkdm0AphXHu~R?!Sm*j6VF(Mz%2iDIW=GN zZTHX5J7*IFR(LNZOK-E?t=#UlMCl#BIwf{utXN>idzr`HcRfd(O%qu8y%bmb1;IKq zo6Oh@fla=b(xta0@s{jA`@#mBF0hJwFJE~QZk@TuS2oxrftl{Lc=;{Ty5+{<6M_Pp za4+Sej{U7zbR6XZGv78h5>@a)!bPakj>nwpyzn2DZ)3Wb6=Hkl>%sNwG)9$?z%I1A{9nix~5!l3gt%6+T z?QcJxz9bdLK@fv8O;fffBb)mAy;J4K=*JuEQ8zax@YB!?(` z*gv22c_|2 zU#;`8CpN3@!?9xAoT1oWQzLwPjeSE;r;VZi_L?*t^@Jmtx)mGBaNc2IdrfxPXnfKJ zTWfTRY`1u=zM$h6L*nQ-eWKog&#SN|lGXw8DSq@B4;MR8blWH|?GzlnBoN9ibn*eHae$CIOxK|wKBf2%c zd_EH2=5?!p@_1XfS(6iRTPo5i#PM$QZtgT#49-L2M;^Ky_3PGBh(n(aaqDT4_fDF+ zk>*>18b%w|?rq>aV>S>w>c!~B`R88nVvE2$C(@bQ__#MUa+gw9;VdY#TcenzPj9%j zsParp_mOdQC=R-daw9Rc)0-ks&cLc@DqZ_J~9L_;(a=+GVtxG$N!lYMg}Z zwpvlk<;R1^ChnMGInnsH>y<&(r?lVZCwG|JazV=ZtqtBfncU-IyMhSYTW=0{lLc3D3RoczY8>V`uiT8_-+w{Hsi^}Ei5 ztZaTWrvg{Xhxm5;X8stO^v9_%T=+mWdmDalEBttf5DtpJL4(r=PyTt=)7t4vQ|5Qm z3~j1cf6LQI?>tgJQa92((rn5fX}e`?Dfm9EY5ajs9>1Xt( z0!lYtWd?rIaS3#MiV5lPb1KdP8NjX z2T_c5lTsyx(IVf{e@C3U0UO{J@Z*S^25Ck3=g(2nsd;WrgVW&1C;Rz<8an%K62jvk zY&tfBpFO8>Ij@eNr&jaqI}M%lF`9D29~O;4m;sPk2wH<@KKZkq8a(dFAKld88Bu;F z$T(0OIp^;+Fd?>dHX_drPrpA>wcwXqhCdz3&-{~4gtN<2K0nHH!TtGjsQmPdQioOS zdg0bE{`#?c4!iL)(Tb4+`@vq^zxG)!+&Vme(&N6)Be-})Y>%|;rJoMTwNFfQpC&&O z&|W4nZp*~=3_*UTV9hdN;CUNC~UbxDwSvzXhjU+sRBA{0C zC)4>kpZrur-nQMv)1ppE7mRo>{;C8PfOI-`y%&l7zcl`Dvp{(yG!{jsof&EL@@+e} z&)i=E1#hu(X5?_N9uNgV7px8R^39vuM=*G(M8T73M|%0S^Ac3T%ub@9s_d`rr>(Ex z1Z#ag1XihfUPPa#s}WbFnG_cC%cC#NSw1{Xc;@|ipJ;}+kDqw8V0lu9`IjxFALiv& z&J46^XL|mno#}C@(nAzPF$|kj!Xu{orifuF@A+~A3y<(*Wn~3_s5D*Yul4ov7^3nD z6Ne1eg=s^%!zavdsNRf^#Er#QV{{?fAkOp-!_!s;MJ2@rx@OuYoZ}bf{?RO58|{7E z-y^KKV|I>5w+ajz{@Ea;s>x1E)x>FaI&HK1fpJ=Gytbn*DL%Plr{Qqw;Eb1@TFbwp zpRB(}9r|l$3N4j}LfLuD6oOIKf}c235ZFiC5BZy4`(?muek~itP z{pT!RY<#2CYt^#8b6)i>Xm+-vFyNr=qtd{Dv~x|?j_TH<{>RG$AAWGh$VsdFzQ1SK zl#JsyU+%Flea}W)v+BeRL$9A^GwS#5y>->WY0r&3zVFaunT7KgJic%Bgx1fsivOxl zXP?JTU5H{fzLZ0loVzq`;P_{)hqvc8Jxk+jFZEb(mig5&e|&#_D!5t`8Siz3hdF)yX<@cQmp z`y;V0b$u`Xk=Uin=jpf3+OTeZX~JKI&+>OIi#YPfn?qLxeVTuN{D>({%^$0li>Ro= z+L^+1SY)!cIm)_el&XQYo})JR^AWs!P}e;@y*)g%O?iMIRXtVs+=aKtM()1yazWH5 zksG?ad1S~(Q6Flvxp$~4Q`>u8hBi$Xt!>RKkAIlr5kBWbYS===hdD|#gN*qlx_a7h z9@H}|FfLxJ)y1{zn2;2olptvo$u+Wu_bD#8knQ=&%$MqS>eTX$q8C3X6PIaoxX9+J zENx$HW@YcnjJav!@KJ-#v9XgTO^PWp=9^0BTS@sPMX{yhjU}b#*nCrAEGjcO1t44IzY$^425`m01mQ20h`F_E zWA>OS3T$D+SNpE%{LV9<1|Of((K@a1${TUtL>73wlD#Uu-7UkcH6y-S^4VhvS|M)U zgoy{<%HA>j9lyjkk^&$9-gEd1#&=TuZ=d;UN6rgfCamlC(x6QP%+s{$;P1MezS#ER z1(mOT^7YPGbN&!7{iDmTCBOJX^PzXT_%}OrwBEN%bMK!JHtMl6&$XR>so#%#n+@rm zV*7mE;o%du^%r}Nf6=o*zuf#obl|A2Lv9z0_%>L!aig(e0(bS>ia7xS0i^nIYh zyX8cy&rsd*-M@XOJ2I@>XOkC{UF|PkSheTdOA|M;mL<&x<&533uu-2jT}tPksM4(d z?4hmM&+UI}arN;Z&wSAE-SUdPB`to*SmCYi@Z$8b)hh?7qZWUq^JHO?}kVHeNj0NuL(Lc z`$E<7b+5sQ>FRRnp-7 z+L_*yF$|2Bh5$c((Bk7Xw0hL2ELz*Vf2C_hZ_b;fM_9D8>mP(qJ!ur*RnerD;ge`4 zoJsE(1TYkI(k8`e6Oy&bd=N+^r%ubA|M5X;rdWG85czN*VmLsX+jRXmQ%IAT&8LcA zni-PSamS4}A8fI@XXCcxuME$A=`F9MMykvmGxh~E`>NCUgX&ZM*OT5|;kEVs>WE0cY6^5Aqs$UKum- za@?T%)UlT~`DB0mTKe`;r}oEqlx-UK(}zVrbso8<-pyV+s*?&{E-pwYf1xrzxWgwY zOK+b$;~jW%WX1Z-=u3g`REAA@=gDr@em~c4cu4cC2iiP8*;K9Wygl=wQ&+F1Et&QC zlvk(BZTxxnZHq=-ognYB6F;81?TJ^KL~htP=6ikfhtIajT$MZTo2XHrwCLM?(Ec}u_GsmC{n+FYu_q(X zm5vG?*lW^jx7pcUFN-sCPgg~}w!86(A$>0;uL-^qnYpXMTj^6X&hOo4np|zV)avU! zy;dB!_HL7*r)NF-eO9J+!=}f+{(i*jEqA`!I_8_b%WYGxetNa1Z~u5orvZD<&PkuY-?!g^6YJArEz5o>zFn?) zuzlF5yk*aH9}qwLi>>qOpLwqT&8N2R>Q!0z^zrIX=PmNL4~JJV9A43ec=^h+ya+*s zi5OFie{Kh(hK>l~qAH-7A9gwTapP$$RqM~Y`(PDMX0A5a(f505Jun2g40EOqokiW^ zw70`O`=9-G!+W}8k@Guhhw~WCRTzo111hsB`_9djMwTC$x<8Y&cf3lQDBD7ny zS~OP2V3(_n&y9*Yj?JT`a!~@ptK4w6@h;d5y}pTx)w$ zYg^(lQjCYzHcQ*XE>0Bc#otXFAG`}n^3AcO_|PSuG)-%Cs5JVHy)k$F)73c@jbc7IWf|M@S^uX( z&*nd|qUTf7j#mUM-fPH>Y2W?!KGU(HS%1FMHIw{6V@*uWthEq z+QMGhLrw)eG4*((zD<7W+H>Kcqg($Nf3CZCO!TuCyER^a;*F-0o=pDcO2MJ@Zsn6B ze+rxS!eYy;M{j<3pV+JIy9+{guG{Dt@a)xbzm1DoR@t^k+wl)(<~R2>77u^=sq?dL zRz3bxuXbndbUC^^;aYLjD;Ku3zIyblpMtimXtVt3te|fGH+<%Q+I(MJgKw@M=BXN~dcSBK3XS6s4TyJcUB zr`HQY+cw>2_6W-w<6re!)~&OT&uCH-F)d@m#0x2H4Quy}8Z>(DzNYz!%jbUm#ZR|y z)LZjR>$6AJFF*RjsQlD(BfM8W(%oy4*D_6b>GZGMzRAK3Qn`W_jRnk5`O{`~W+Cr@tqTc2gk zH~ro_(t7K;+k3`u@4Nh)@5;&>egAEz6%`Ho{`Ki=k>koPZu#xb!tea8-x|AYxudi5{!UzZi-FX?t{)dT$p?6D4Qxu!fcuEpeQseapf{QlzMb))vKnfL6_2@mw|lTp?4 z(6bXq_*wgm|D$5{-rYq-4<8z24hx)|eMC1iVuW^P#852%w64B@x6`*2KT4{Sl ziw;O$6Z(4S0vwZgEK;$~b1qr^bwQYaI^7Z4SZ73)uBA#d?-ASgZ&W<+?A3Y9d#S$o z%l&7cYhCc<6puTdH@@Cye)J#Oo{H!Jx{lho%5bZ?_CDE~M%D&(wP|Iu!@^88Q((=z zEqX}Pr{MS>t>X_a+tYsHhq0%3_SwGR*+(vwpZaOv0}DGDv`sCcCstfs*zK=Q@3*f0 z!8C5x`auWgep(%P&35+Mpol&jw{}{dzq9`5*Viu%Z^8x``waTx%@;nu964gpoQZ!v z^!rKUgvbU1gEq%LrTa4S!!+a2ujfzSo*C3GwCU5uf0;hn_GsFG3uj*5JhWuMxeebg zEIjh$Xs@Ksr{BHxz3%5~b==60Q(CW#p8U}Ai^=JmhVH%d_4J@7&yRfSknqUGCGF1l zZSu~uqYnKLxbNiJZr8Kd9W_1uj@j_pl>7T#UX=P~v|-uKE60bA8?@@XzF{-eTiSm4 zQ)Kf6hgSL}UYP#aW0!V5y5WY#JZQ~K^#$!r^;w5;Jv;>6O!YDFjyOt)?@g%R0c(dS zc+}pTm?;eO^0(K55NuD(6jET@t{BpiP@CnXXAkr95Zr7|XrEs4pkv14*fVy8~SwJNJ9 z+^n=6U1vL@wSDlfOiQD*kr+;}sBGe#mZsv1nZ|s*#<{rE-KT9O1#6l!PLJL`Xa~IAR#d8yze`p*GYIxm{fI4@&lOuT zEgL`1?u$CS?GkOtxJ)himdw2$L5e^vRQZo62&);`bI5gvU;r*_|K`ZCzieChb4B|V><)3Mv7^E1*aPs};}Si|Fo zwzXWd=0HN*T>sB>ZI}LZLjX#F=Q+V4C1ZHuVmo%X*r{-uduS3kJmt#&P6H%tz`^KIw8 zyUvd2EruoR`%@DpB~IF9No42^Or_m9_2MqYFXNy0RuWqnhd1?2fS=Co>UjF3M^$k92f2iz)W&OK{>=WC@uvC4;H1@H? zZbKd(UllvyRMNS#9e1y)AHV&5m)Ypa{LUj6=obH!Hf3tB#s}iZ4WCmqMEig=8y%p< zwo4_pT^xHN|7v39Fiq8UECc zHvL|L!VU!FX1UA-kf4@J&szO{JU?D9*Q7e_2DnB(!&`nCAJi)^dAC>9@?!&U{Pj%t7gvt> zqxDJuWwu{mNG;7hclAAUvk_f<-V58H{o?s)?`(R)@^tfOhu-M2xNzZn^LKW7s{>iD$SbwE!SpO}!qJH7`#WLFZ~ZpI_~dv?PRPmier)EP->*&`*SCG{fqfVB?@rv_eN4L%*CPhER_U6j zHg2@6=|{d{k4@EUhi%iQ2mhEiZ+1>vz-L)+CHcJ8^Q)yVe`?kay>I5)jKHJc-s){T zvZqyE+=F?&Zamm~Zrto<`0(+PTwBhzkC*m)V(d6TVIRvhViDK>q_hMQj&>|Q7A)%Y$gKXPYR z)uHrJ57k>Kcn)ZpW$&pjqNn=iu1j#YUDG{Tf}i~Pfe#L=U9TvonB&xxcGb3>D7@omfn@TpTl7ef2pvDu|1)+J?^slwrRWB`#-F{b#->J z*?lvmrFUBP;8^*I=6|sE&c>~0=h~Y;YVwcP-rg7I4GjF|VD-~IY!f`Xty;ULMagU5 zy>R%J?wyZ4zuEZbZ$pb3YF~Tzz?ef1e|_uH_43{Cz4%FVF# z9=z!A%{=vjiHB2CQlI^DWc|NJ{`ye;gr{3Q(ARRUXUO|o_RKgq<3^`x!+SKjv7+Ms zC4<Nh&o{m?{``9%{rtgXR?=6S-l}ESkFR>Hf9mmJ(YxOKLv^-vb=>`} z{}{3*_RlvjJQlxmbnY{!ho)Tl@uL-E7BBki;n6d`I&i=LlKZ|%{=VV;6Y^J0X;HLq z<=W@F{x)OUQx7jLf1&93*_FRGy_0n6$(sk)`#m*x-R|cay`t(l>#aAe&$dj`yb*Pw z;QL>0?wOuHEGl?%O!Cl)&rf*CYeDe*dOP$RLO*=wR8a3{tOt%B*>LpQv{~2BcA4P& z^(f2JEq(M~Y|U;~virxg?CVQ9?{!N%|6=G}e);x`eK!4a#xz|&zGTuy+lL!`Uryfn z{lO1U&3xT-r0LDK<_OKKzc-%WHYfSj5nsF?IAq1-N6cM(Eo{#iH*1Wwu z+XZ=ujXWY)_V*rlmN#CvzTZPjCO**Y_xPx+XFspR-k8n0Zu)py2RlQMx4yhPD1A*?J;1nsScL!=rh4uhFcr)56?J<1KKaV(sWlHG1iPwnU}9BsWV}G0^Qy0i{j z+i!{l#8{o}TdnPq)^=WN+pW^B<=z5}B^F+Iy*)5h`U;6a<+_wy^cJ^+(dX0MNj)!M2{cdAX!~T(9HhL#bH@mdu z(&9ghtkHuqjyBv_es8caw_h&ub;LBHjN*dFsx3;jjpL$sFw&Yj) zrDTmhwBoOYF{^I*&Cbbs{-JM9OcA|5X#Vu!^L^82clL=NxcB1+Z;$(HUjD1mBpQd+v+nZI^^%5%K>4XfW~M literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Monitor.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Monitor.dll new file mode 100644 index 0000000000000000000000000000000000000000..c9ba30e65e64b89e2bb2a51d7cdb19d82ab1ecb2 GIT binary patch literal 412536 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%0A` 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�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 ^NBA|e!W#*2&wpE;(Q|F62f3<4Okq) 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

    Rts^|H`JPi*f_ltE!2(E6ma7- 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

    2ptI)CaFxufU9eH5?H=UzPs_ffn)Y2GRb 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 b?TU@%adY? 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.ResourceManager.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.ResourceManager.dll new file mode 100644 index 0000000000000000000000000000000000000000..16ef94a8bfebc4fe0535faee2ae37e9404956d9b GIT binary patch literal 1109368 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 z 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%0D@m zD9ue?`!p+m3-5T`O^4=;XztNS#=z-x{Z|{lQim$iby+=1l4&aR*Y5HT{h|T=Q0rlo z;|tWMV}7e7o(E2*;3O+9GfsX4hCkM!e*}g<(!p$e8L`C;I4!D6$IMt?{^O**k3Pf? zVlW|#NSr#tOs+?q_(xz;;uG_mQ%jw$wFM~5Cp+i2pxi9l=*_3kMkI9}z~sQ?K3aVJ zg+~#+b63hqEaadjnBSc8o5sfnuApLtEtp9&ViF&q5IQ#hXF4Tr2U#gCi58#VlyVB` zgNB?vkCLX@S@F49^t0tnYWE+Rl~AXxe;n;`CS4m^GAsV@uW0i-zcrCF;tQ{*9|Iek zeFa5u{6kCm!(wP~J*=Dk)zj?9M`R^x68#PYHJy=Icr=Upuo3LzXbf>8evK!xAwH&W zOjN=Oi5#mW@w1d*1zTn$<+mZhWXRgt3Hfa)7x(gyrOAi>KBoT_^nX2BPa5|H3POsK0_k0)q!`WXR65Up#>tBcoQ47y_?W}#!2+$vok8c5&!j_8 z+YMq0&jL27o)k?V$QCi`RI)=J&2{1<$(feJN5}#lNS`u~(2ptwIuZ)B=d75*uEg5V zyV1FAtRS&ROyN~TBs)-*dWGjO zlW=)PG4$&|1uV!^ZgLqdjbs+cKwjv#`$>j9)l=*=E><{+>haL>H>VrMVT%a0^|%(? zk<+PCP*xhki>P|@<}rm?lx81@Y2HpwWxe8YolQ0)2gryi%wY**=s<%z{}-C#n=`#( zSo(q72DH4%PuyYY3y#I(nHNUw*ilVMf4rYJwjcSZ4GZ5Ooyy3zGsBfh@)!1C{jRSJ z!@}Rl3+%4bS8!MrNBCljangW3h+{HvVhm)`*5kUc0(-a>Sa>rnGeNGc$DPDwdO6FG zM!5_IfAa>hc>{Av%`{xD!X&DP3C~q=YBA}u4v&w*u|#a;t4)UCv)c34(DczHx8c#t z3h6h_ldkJS4K!(0yXke@(gA+~H9D>*5t>Y9O8&DnjPvXGR0|q3eJP`M{&OZL*`L4H zQZ3?fY)viX)@sopK4A$K^j7Kqge3&(<*y`NwesaQPpI9$R)SP%_kL|&Ury=M?G#Iv z5><=vHOIDY)B2b;$F%K4K*gym=$PFwRvmerQj;kivX!3Q?=ybvWmjH0j!S&{W~{o1 z3LV+Ek2?P3IK`j*JMzrFT~DL5JK?wDeCo(kt|%PFh3Su?1nc~UE0Yu1(f+WGQMs~^ zeNM0uE%($vby}KIyU0<`qBX5IJzKVv?tL#J#-vMiKb6}>`CVy0onH}pmd<%0r0sB| zd4!3DA`R(Y4VsLFQu)>Nt1}k*)!7sH_$iJbj6d(@EOq)Vim2yZ{n@pCwSB^q)BS4i z)qE_$dG0khN6!5?UXT1Ea6WE4b8EG>Af`pL14@WS)bwGZyYd4z;_W?${)?d&Y~i{HnuD z=C<;(J+m{_*)v$4E@A!+fwd*Ga@Fv8eaGag(KBBy%~dzx_}aa%mXZ#qvz#~0esX#P_06oA(;BGE z34A;r$AbAYr=_Zxn^}?vve(|7tHy3%4olYavHLncz79SLt(QS3ziv)i(LlxA#eDW& z!^Z)|GpG4gGnCo3np=E&JRes>OZzU)C;vRLA?M5=f5JS!S_4l@nLC(t)pd40^?muc z;_Lh>@oGNigU=@cEJSpjb6Q$kJE8nj^kE3rmA~ynm9d4&ARDAI$m-U z=QN|7Om)#stp8b?*&==C@$vo@e4MnDk2^-SnB!L;_RhaHRh>-bQ`Pggv32g8!8)0^ z>H6hkEx@Ob0TS#`iT4&am+_fE~pEhx0aA!T~)+< zUarl3`CvD)Zkv@iY3Ye=h$%UB}19R3=y5Lpgr+{w$VZJ-qkj1?&%X=5x-T zytQ}x)e(*Oyx?LUzh|ssIh*15=3Jg1KHI>fBaU)X)y-qsIt#P;xRY#@sa{*g_RX2W zbqlWLQS%|`kj5rBe2!kXfo>b#*K!I?uq0;HQEE6yo{L9gN7MKsx|hs_F(>r)5k_Q|E%` zXUl8RZ*ixoK0vd}1ohRe3mTzY7c>$)r8emmRx3G^5HE8q8Pn>i z+q7hi4pVn%$po#|k};~U%D|=jv{8#0Z3Nl_bfkI&DE2<4HBnCiHOppnlzIv1xhzI4 z)EmmO=*#?fjar;xwNme^$)uO3ZeUtlLaf0zW(xWcXzDGDI;!tb@7VENuZ#K>^;V)@ z0U@q;5cLYwUZC#NZd+2IPN!N-YnILEY?TJ|To$8qR4&l-qZpm5>H}T4fKg9%1XmJpS(OgszJBy}T7Zn}ffwQ31ylR&#xZ3S&6XaU4Z z>FR6H0_tPX>Y;@qwHx(zf>xyVfVL0yis}2z+KUN*y%{Z6+kwW;XS7ni5ySrZ{iXG3Jgidh#PB#OxPfVF z39)3mrwMu===9qdm8s8w0zmhvUw~$yg@;sZEZ5s{7ngiaH3GV8ETiozALzmv^%oy! z?NDuiI&EayE2>%VGZEcbRGdiy0ImU<6*`=ts1#X`GZt0_Ruvblxt z)f_2V%;-n85NOF1Mn9>=K$F%p`dzI7ilyEbs2J;MprtoRN zOlOp-QKwCe>RG>_WZf~0>RW%H>@#VL*Ff zm1C_IKtDsf?X9*zlSXmLj#dYt;jr!TRzV!=>^N#Y!#cq_J&tuY89FN}fhXIq1SPC}2)u|@z*Buf{lKGs;E-WwR5XI%rd3q1Q-ML^F^WZH$+ z44_9)Z=f|F=n2?ih(+J0roK-oZM(2Q4YQWT$sEaOxJ4h2B3f(EhFfKz1(q>wg!Le} z{JyU3!p?+VLCHpUGVMz1Ta-+`gHfUNYaGvDrx6!LNckDH(kKS#H{!yyRG`C&3#0l# z$Ce2?5~zVj?SM|xB@2MkHP1dk!`Dl_!9XRtWFgR38jS~fRijBjgEg84^t*0v4p6eD z-3fH8M)&&Jn#WPeQ%LIjff^DzLrt>Yq-)J|bvl(SP*bg+{H)yq=w+Jar;E&Vl>zNe zvzo^}4%3jlp!?F5X%nNqzVCr1k{t@v0NP5L!g6m*DtH&!?tzzl} z9SK=l$20^Ip2x;C0ur95#T*GFT>8c|an!porWugvY)H&eK%%oTF)e^ZXE(&O0ur4q zj5!)ew6rRwEs*G?Ean&>(Zszm#{o&-x5jh;5;?cUbOI7Ncf@o75;=FpoB$;K`!wbx zpq6z1y-e+nDFC{RwyDe1zL-;iK80cKo?WJ{i9H`^ zZxcpEu@?Zfgq%}j2LSzYG}CU09SAg`9iyeOgMnIiWV9i6C=hL25PCFrIMC&^316mm z#$F6mk9Nn))TgnR0!^>W=%?7rfJ)#K`(rN$I^_taCB=;fI)EN!#T5dzq&wzis!7}! zpy$!Q_HpBY_S604GSw~aYM@`Cvy0*;0KJIbUKuwDs8MY$d0kups5kvKMVY!et{CX& z!x^oNyB=uQk&GUQn*y}-C`Q}krUEsF9o~zZ4ipPJd>l6us15Y_-?-U8wV=UofMr2lK(cK&ggB1|8}6u(7!zY zVxVi$qr?46feO)wX8vVBX|0({YyX`2pYBs=xnkpcCo-MwuGo-zca)qf7kv0?9bK!hau-jH4p|79bf% z^ZfS%$v9f*e-LOE#!-p?VW8*XpX>dP0LeId%>NirPmH6T{wILmfv!LEKLr$kPwe$S z19TevGa>#tpjYTIfihJmeml@m_-Bjw7lDSuCytMQ3Fr;@=Q;7O0Cj^;42s_gMBB^6 zr7-?=pex}M*TlaGBxCcs__u*>gHKG4e;4Q#XmD=)`#_1X=I!yjfKG-_EQ|jLs6TvS zRs1JFC&DMz$A1Pi6V}`m{~w?su;v5tUjVIzH6M-t5@-l(Kwm+hZ^eHLB>Mbs z{P#eAVZ8qq|0B>J81MdspMaV{pLG&`0lGSc``$d^Hz0*Ec6`EKpo7q7_k{gGZK2PL z68;48!9PbQ{0-Cq`n)dTAkZ|7_nQ)|TD;<24(*mE!~ji(cJE4v0}}0SOo#^>3hi!5 zNCcV!FL*d18R#dBxTg|QfHEN23khjJ%^=IpgbbiNpxw6;vVc}$#J!)812h@h{Uo6_ z(2daU7YTKMvM^S@O{fPXy8bDlK9J}-HnAa)=sG*G5s>J*N#c<}=V1+KpV$QGAm-LH z5}N^ag0A}|9tHF==GIY(Er6QQ26UMUB(?$)UC&EA8c1}#Jh3g1==$EoV}L~0PbMA* zB)Wb*u>+9k`n|+XK%(o96T1M3uK$~O0#ICMZvC6YlYribu76A{0Qv%+{A=Q=KzrfI zel=sGv)93av4VM*r#4Mi+Xd)_}!H7X#gaF;)hC;4h1dK7~C&^&np(0S-Xo8(DA6ChcKhcY==-zDw*&QuWUnVL209(_#FxoS zf$Cwt-j}=#XguNx+EM^|8(x=KYX#6sSTnQMDxm(DO&ix*1Ju~Z`aG`IT|luI{b$rF z0~&$3Za}TOftq737*}f}(DRt00*#)x*5| zW~~Q-euOpuTkBztW4CDcgaz!J4g7UIdEA%-1pHC7|9|olZ)51?V+s{*08JKpoM)9x1N_{RuAp zQr-k=1z85BybW|eG&myVU7+32+2twk16_gn^O}@hKog;t8&W<3>JBdRQ$7Kzo6c6b zE#)(yBM@sWOZgAbR&ZI9@&(X3aJf6>OQ7{w|L#lq8Yl_=`E<&+KyBckZ>M|@^a1Sf zWy+60GAHj%`3Xqk^7zzWfNqD4@=|{TS_m68Ox+7K5H@O>x*zD=qgm>fseb~=jM*;r zZy<@wJER^2^1)kANVQUU{o4gOd#1(!HH5bgPmKdA#GExgH6ADnBcLcX5oidwOiN7$ zl341-)D$2e=B0(HX+YBVRjC<3GB0gN%>sH4^U~v~IY6T@HeXGx4fGbq=I5z(fMo6e zHMJhlI;^n%wE95LK(gGlhCs3&HBV~tqQKzCzZ*_l=VB>wVg+Nmk_b@)$dr-Sw(yyus+ zvw-B9d0$#LAhG8DwC+Il;`kcHUG|0ac>qrC$gnK3FIHBB0kXRvM-c0_p@GJSKezP!Yz;sp-Rj$}m>?rjGy` z4u82U{Su&4;V+ZYM*YJeYnZ&@b?pSJJNn8jZR9)AX@G zFTt;WOdk()E@m5*aShP7GM8se1Zs@AJU`=FpaGc6J7p9BwZu%+E#o?%TV*cKm<%L) zELUXQ0CW#*RG2XhNNhAAV+PQD81IuZW&w$fCTH9TG#jJ;hK#vDVx!p^^MP8!MsqV3 z0Evxm%~%N3Tvo%3TY4fH-}yE4`SU5(N4QN}u;c(nK5jP*eD$PmqEUu0|m z`X01zGwzX+nAyL}*aY-2WcfK`Gtdo3a=l+OwgL@9dw*s;0Mr=swUzl0(2tru&B2+k0m=2|n9MhTv=378=y;+j^4v<`LmSw&N zB-fjdWPSiN95KVonI8hl_2x&J9|Ott<`0>l0*QYf%={ck=1(i@zd+)j30b>=nkAf&#bI(fMgEI$@&gR{PVD^AAsaKwL#V%Ao0&8Sw92GRcni^UxCCw+h_d_B-gMV zvi1Rqf1Z%_2asIRo|yF)kof0mSqFgR`u2=0x;alPp7`fESw0}S+U=1Q3ncz|UX~w7 zu6_GvB>;(k4#-LZ8UmlVD61Bb_~)>!R3N!79-fsBB-d(}Wn}`%wOSx68%XSaV^%JZ z#H~xS@_^*}VMA73AhF70S%(41mDCei4S>Wd&u1MDB-d5jvyK1~tGtrc7)Y%0YF1Mq zvC3On`9Kooy`9w@NUX9et0j`xC zp8+J1MXLkcS4y)*G+1-IY!b-9>y9ba&9uH+xR7CzFk;jhg-arz0?8-h5 zs05?xo9uo-5_$ZY-5=-#L{GJHE(DUuBP-`3Ac;KcB9G}g*8o{qeHZ0SlzJA=ZtHTc1=^m%=;53qAo126IoAQn9P(1mWFYa@ z*K=+FlB>u!bEW}_w|!L5NXGb2kC~g%x&d?q;BC5Tm@DyA|j;tgs*EJ^)0&?N06O$$bc@G5pi2y$wj> z!Gzk60_8U0lBu;H2NM6RQ~ODvzK9?i*M1skKkVM7_On2Z5G8b}{X9@1;(}9ZzW~$_ za(1n~1E?t^>s9+@p!Kjy|Jttt{Rle@uKgO&xmeLh)qVr$6GUX!)P4(S2fVzv_B%jv zxN@6b`#m7J9-CA910cB`TUz@=AekBNsr@mK*zd{Op90DC*v{IY14(@SN$vjv$@SQt z+Pi_|dTej)uYhDsAE^BekmxKn?>iv59!tvm0Z3xuw7fk)GFEc(eonO`_}si-KwAY* zu9LUdL2H<|AG8gKQRw}#G@hlFQ{M|z(>x!L#5T?HVu5ZWOVhKHdGSCSfm-Ax0lfm$ zDz6sM7eGhnr2_p8)HW|YjU~&;W-iC%WrFrJT5q413$zujcgU*^BqO|YULBzMh>4ER zs|O^j?+JPJ!Bg%Vo|xAVw0VfgPR=_5NY>(lye2?(aiwu;UNc9%)AO3sj~vqz8uMAQ zv-8>l)t@5hSk$ABK@jbnyiSgKJ@Pt(CNoOUyb~O>UU?^i#?K1T{qVd~(;BJWee!7( zH&Va!X-TQ29=Wjfc250++aYbG(~X1M11DUxEP?4u&X@G;;hmAcvu^>?ABUWUw0LND zqyvWa^rYtjSGS$Bhx7-ZABS9ow0P(c-Hz}dFig@8=ZTzk`%3zYmV0V{!Ob;J)2X3v z96kd4vIa`IWBN%tNcaDCoxXLUxAjA5+e&KX?Bv<;7#x-vquUU9{j9;5&+0kGA~RO<4x{U!5fBQ%G%jjXk|` zkG)_e_`N*vZlsa*wTb9FCFq5QmU6~b8E20Vh<$!ICI?&pF1kXGEz5R|jqxeR#8z$=k<93*=BaVYD_Qcvst4b=1Io?+uq z?(hpHB7J^%G1B`6ik;sXBK6)Ma0Bu?4w8QE)B0LCTIu*4Zq9uI+Hw1^sq|n_ebsbX1@Jh_xE8f|9OK%zs7IOy5v7k^kc@! zYr4E?uXy-Fkl&00qwiRZ1554K?VEND-*>e?8~&zU(~jY9+B5P>xqg!$>&^Y^H+gFx zNiUo%{Wa}++w-=wWyoWYJ5qb5{b|sr-Cmz5(q2cT_IS=8A?8Ii2t?!-BQu=&N z?e&}7T&IWWbmNtrZ>f3O-lysD+*teJj=?{GZv3+%e>da(2akV?JuKBx%m1Ms@7=V2 z|El9iV^`xp-(Mi{rO7vXcz@VF$o1Z!zmXdH+1j3lZt~4KV(jW2hXaPizsPzpX-%!0 z^9R+^d^3>N7~jFUHOg=F;Cfol!*$xEM)@xq+8q403_04x-{{*;kFC*mA0FBX{8|q^ z5ozksQ<2^`@GPWz2AzZS(jmQ(+H#0L*nTMUsTp@WwSOCbGV6(1k5BfjFJ^t--|u|1 z^Yev6koM5yVWJ)fLx*0B{C9L}_#1x4k4NkAI!VhBIj$-MKQj&tKf}k4t0t9OuH&Go zpqqKg@H6`8IA|8=-g&3(b@M2n<0ww;dDo7k7CP!xCXTut<@XG`1L@%xNNVIVdNu1( z`hXQEx4)mXKlZ}4uJ(+*jD76*>28$!dEos>E9NhDHT;(hd;;~1Ud+5`;-Im5y|MN8 zEXo_bir?9B$SZ{}g8u%1S2bVp$I$rcP0&+Eyoc2Ijj?;>Cf4&9CR-16J;(o!9_c;{Wyf3v=L;~x_bm^i}3J(1dp6i1l2#nh8_?fz9h zKG=hP8hzUF!5_$X#|Jk56Lq}P=~~fa0kAzDj2_H#{QAxhb+`L_C0jshx(A~y+KE~`fbM# zLO1#_^QE!7+mCxq9B9(P{QANlVrAA;2Q)ixd1y|3fC z_Xdr0(M`T7|2^iXev>!q_QnkxgYvBgN`JcR^v8|s&*JvC-TNTYKQ}&yblq%8E21x2 z@CC}t{!fPb{l06cown-IVxHeJ)YyA?|13itz4=B*K7D5c`E6BClxwSgyR3xh8LIOI ztB|%BE~%-1PT2bNb%p!F@y$?ErmO>>H^ywFl)kDkp5^eX7w2pS9@&%a;#WOOo&|n! z$_q&Ata_PJO9k@YL;7%iE@!FyM!SH0O+H1s^C-#R*;>-B?Y=<%{H&jm-kY}<>5}%= zOI*K0LqDZXIZ}aZUXH`iUghOz0y%0<4;`x1{xaD=RK^ZQo~qlUa&j2`+x~GH^f9;e zEclC|i(HnPpVb?5lW*4>Q9->ciQZn#YF|WYF8!ME6qL8?-|DJwx3?1cMn93t8@jii zU4AS0^elNEsnK)Q^}B=kus$m5@6x_oP9A?E&;M2q*8968Z>~Bf=0o(~*2|B;b4&St z2h9(d2e@B)GYgUbgvie-8()dVd>J{b=+q?YrgtH{@u8e$OrC`#w%R zpMZQ@U+!{lxw+ro@;y-Bj7Q_wJxc~7zv_A(PW7YFbK(C;j-n{#mph^`e)mKLe7{$t%~tuP?Em z+wXY1h(A@`kD|5Pp(4i^`19OSzJE;LU-XPKd!7uSoIQ?bhpp!x2RyEB_tbN@=k*UW zzAM|Vw|>R#yXAKKK{$D%EnkNI_AJ?g)aXQ{Gu^TzvEwu^Lq z`)XLZN3Q-5`JwWE=8<3OoBr06{9W7qNbN*3Ka2irT8_%=aUb+z+Bf>Eu09@X?SGZ^ zaDF@4znI%T8Q3eAr6Soko66hcySnn&`zS|*l_T;#N(;zg+8?v|1mNoWdDnJlMk$AT zoONx&i$y0g#%6Rt5Vf0#E z{nXUB_R3dXxvD$9jXXw%1rTzf$U<%fc9UssF{Ti*DC z-Hvzt3STdB`Dptwp^|b<@$~1Wu=Q-Y7JJIy$?H*38(L7$Pc|Q zA6}l3t6M^zLrt!KPoB2WhZ(O%4*yMJ$Libd)F|!dmgnY+MUI(8lCIJI)#eJpM&2=- zd!irzmc0MI9OCbn_j2o{`ueEaxHEDbD&x(_W9;qY$9J&*GIFY{y7=l`mWum6+7 zJV$mR=8d_fFJL|Nu3zFOyzY!ZIeUF9zn<~?s@9KOZ>&pRGjF@+YnFGiN8a%DDw<#2 z^J>L>D=zQWn;Dmp`y0M|wEC^M9k+hmi3c z#E1J;+2_7wU&zQ)Q*wCQkG!Al)<;dX-?d$|dN?%Y@cPG0{aoy!;wLpFPj&sJrsRm; zZ?@F%_#1VBD1l+_R)UQqfQJaaZX5+#`rzX#8cVNc&m( z`IX?lNA=_}<1}@#FTJnv$7<-PGr_;&2_UjEURALit6XyT<6wLXuZnmDYTxqJ$JuC%a^YQ_qgQ#{L|%cfSt_#WY3ZXz+%Vf*Ap{ucWrkY z@d=H)B0raUsK~J#{Wp3r&$9>cogH%@w>o;+R3mz+IeDVBljz6ox4fQ+-&B1)iB>O< z!A^5a`MZ36W&GEkf3|~e&zsSff7``BydSWC|EE&zxb4ODyz;r*bL%%;JMzAQxi8VP z#@XeoG;~q4P*Z&s7>ZjC|skX8bZg@BHuX zkEvf>eRgdZUjE4Qpj(cSt8;5aulBqgtvvP6zR}~z)koE^JgvjpH?n>@xY{4Hxhrt> z?bIhqIo!|h)|9_ge*B3Z-1CGz{;EC?N2`Ym^m9)9JygFkeqztV-scyGz+Q7p-Q~^v zVb>dla`yaf;yQOdyS#Tihi}I&@8uu9ycvIy>rIT%9~mchy&F9JS>USY_G6x(mV3%a z+kZEIx1WULzX|Ob`}Hh&8hFg+?MS5`)rosvCqAL`c;s;|Vo7 zzxf^c_B`{?wi9hXO#iEE*RJhi--vEJiXZOlA^v6j%*bKns_ME^RX_8}6RjV4>sQrJ zs>{b)zozsWy`5zod*@qYUnAE)W#>ahj(=;MR(@Q_ycMmS#^0-J-_Yx}@bgRL>$ZPa ze*5|;yxbMVDgUeS8?F7lav1xXack@x?f9)J`~I)wtGfLp&U44dd>tk6Q?z=r<%l-k zJyhgKp}4@W=9cpBT-euh?)aDE_qV>Qnyzp6*Q+PDU;gjMqr1KT8wcjS2e)3l_P6bKsQI0Hes!;p;pYEn%gc4fRrc)FQa5Uc_2zyLAaXq1$0b+KlIrOtRGy(x%Hy_I zb>%T}l2;#*-%A(;ebiLDUE39f?SJGrU)pz%1CA5LE>({cqm{$VC;Yo(e&zMs$n(i; z=x=UmMfGk$IXkXf5w@P)&fT8!;pMZ-d*``_UHt8G+dX{U<=l4Qapf)lKI)rw$h;qK zzHisFc({6}jAcW&ajERo%a%l_Q(v z=IamseH#1v!)rg=Pa2@S?XNA%t?$+^+pTlC_1*diSKjPj#yeUwc7*)2_E4BUcXwJ+wa~Jo*zp-ui}bb^Ft`-B@Zbn(-#~scCt(Pwq_61uL>4y&KYamK>1@>N$Zv%Yt2R~lBH$n#^FOCBS~n9YwMzxw|3 zT(t7wdy-!J8M&$|Pv!k5{CN7``A_)q71@8pUha94*A1D!s=jVSYbO(T@b906t{Y+} zo;SSlhuKf4sGfH};SKoX+|uy%jD75Oz4K)G^&{7-YCk`WQr_JtZ?CJrmRsMJ_kgEf zt+!-7ck9VLp4l#SQO<6!s{JfquNB+HEw9_J!^znaa`!Ab5vk~*I`QPG#3!2dP1-m6 zg8!ZzJ<)$7NB7|SQ#GZRK~d`EP?JaOkOUqvc!==MD1u4nwwu79ViJyYM5v-y;{+Bfv7@-ce1>%04H z=yviiWNhwdbPq4QWdafB<*GV)bduFA(* z;q_D9_U$-0ygnkw!6J|OPL9#X$km6Iy}a^OS6|WEtEStpuD#6oGV@8K=kyL$dqyk& zKW*=STE6P~!=Y+tBiBD|znW^d>UMe0wGNv8kJ%Zi8;6R# zhl(5~E;4b8k*n(Qbk*$l|GFGzUN+;~#3^?CX}vA`0QFq^Gv4xc+?$N@UcNRzvp*1? zpUp@1dm{5GUoM-E$m5MSD(YvX@)hxo)K4!zn~(Iczew#F z{YT5Mx^mg_g!h-q%45sn_NU6$x8-o#AzHoIa)_NOtAB5~NPKKL-TE^1?RugIlW*5^ z_s`JndT#$R>#kkDPS|GWsGZ94@ybyVe?#}yGwVhqxeWc^u4l{F z33@m4hyDHWGm$THR%idSJMjtKH;5cRg_mdK>b{VtXUU-@*S{yvh0uqYZ;Tx7@7Y$z zZdXKUH@7?$jXNXnn9Y;WkLvqb)#Uy6%#N z=5;fl+kBR~`spoa^C?3)L$7E)HuG>r?NpYJSB{GK8@jii8UMCiZaW*gT~F+5@{OG; zs&C3g;!{z5Z#^?k?Rsvz8M<9h>}B%*sd{!hkHBB-@5jCf+_U6Wq#|c^;)yqjPc(6$ zJm+QPsjeKAzYpQoLv`D=_YtG*|A#L9kJxiTy|(Czx>de~jxt|!;Sq4mPIYuA(ZjJ@pk>bvAMbh};) z(2brW)iZQ&J-hq~;A7_Lo+W1kOZn=I-=4%Ln(=$6$Z-MsZ}ecE7j}QYt2%nQyhij= zbMi!MC()1FuQwb>i$WvW8yz6k}_k%um>0{*T z?|`c-N9c1cKZVsxMbEVuIgGtzoH(CzlJ&#(S9gC*{p#woYrF9BN8Vp^%TZH$wd0&< z<@v*7=Y)58U9UO)q!7Po{65#!{+P}Az}2@?yC~&wzvob0eR#)R^i6y z?U*<=Qaj#xD11AS`G+rGv0M`(^hd_G-QE;We{OQsbB{mP+cHo2X#4NBr`x~6+0iXe zXnC(ZGHzqeHSa&)3wfo#(Z`vUAGcf4j%jz~>ZgHwmQ=6((DiaV@nt<#_PuAfT-BAw zUT4C~5qaHv&83eqn?DDxs$Fb3z6-05isUf+k47K=wmfdX=J{Uyrt0&3)%5aj$zjHg zJ%5{dB^UF)q1*G8%&R8fj5oXfe)!kiQg?k*&gK*I9>+U|Pet{;^^D)x^)kTEv}@>g zy@sG0|1ze(QDP^_0HpwugBc_HrG9smA7Jhbb;MWzoO+oa&^}TcJG0F z+i#?uX!#qts;lp=?JgpDLf6m8>qSN1=@kF3>O5Ul`+L886Rmx{^`o_)x4yB9u~Sv` z5xsq6TzKanBZrYIT6w&7iF~~#?f=vMTzUDbHr|XsR9BCo@oV_;SJ8e?P5WE4`t!DL z^ke+X=qXx1tG<3B?H5#UUh3K|+I7^#YiA)|^NvT+6VJQe>tS;}DD~WNK)CBcb6qdx zqaAm)9Nz1HxBOM->+RpgSpVjhR!v^FpRqo?>uL4)+xqbGb?e#d|8~9d^%%Kc`Fir! zi&hWb`nJ5@e!A^mdB1hn`~Q!>xaE$lr<%5pdz^<}mw5N@WL@=skE>@%A;y!~Gy1r@ z^7H<9v{TdVhtBsmgpEfduZMG7a#dF!q4F$_QXaRRsw+?B?XwbksBU}qb>r5s{f>NH zAnm*TnD=eOKckHUsxF5a&*xy>_4=zl?|H}bQ_$bs(u(T6gmU)v+xubb+3oztQ$D8OQ@^tN)f~8I$+1Y! z-MDK9)9v>65@tS~Q2$}yiAXO=KNIP7F_JzM*Bf|bEYtmJ_R0&9-hbIpq>VORg0yGJ z-={Kt!xpnoE%=XF^-kmb$8wU88k|wbjZJ++7tHc4pnAEgSKf6<-)qdNU*)g69PJjb zJsSObEaz(AHvVgo=C7NEH2H>kNE>Zhh_v+f+bLzfrIhBXHgRi^pLVU0ds8`>>)nrf z$HZ(y`bF$^q-hy%AXRyS7u08LsjU}%gfwxu=xxna+z#{k9Ob`H|B_O_vh#mNe#eZx zNRP^k{ea~hmXS)SU%j`m4y8R0SM)a{VN;LMG2BXjjR#%w_DPI~2+n(ALE}>xPXvBm z_yyr}=PPW(gBN8O!x%k4)HzqnxeFFp9N zl4dTte=760%RhFR8^3m0I`OjU`S-M>`u-sQbM86Tg?IHjfpC0~zPH!uE?jqI55lBy z{5_xY(&|1=9GBFszYDkOHi2-mDIa%6w}pgLgSe#oCc-Qu|2eWR zs}X1IP89v+sRbH~{_@mfjYWTT)C%A!39sB2=j3nlAdS zr=BtOOEQUGPra<^qVL1hTbiCTm1RFnePrrG|Mk@u8jJqxs~kC6U~{u`=v;O7%X|A(tQ;3)|$SLTs?hpR@KF7{}oj?(mZS2rMfBh?Og8u{-H zmQqKkf*`(;@R6!l5I3gsP1Myv+?sGRwFGzu)$c;Mxq3N>Pbb`xS6peLCUO z)nU!J{33Pb+7iNNsVg*ovHJ?b-PE%hf3tBD;d4}8zLals&ZC5TsF51qckio&d#Z;t zUfE+8;od6cC@J4>@(+ajsvM0^T=_fUe(DrpqmT2|U|^$<{_0X-qmTaTDxq64elAci zXe{GrfXZ(!?R~Q`=0l|hsUnTroRda)uzFeJ`|fQ-c&Iw8g_K{}qc!2-4Cs%?X93|$ z1Y&#+B0SPyJ-=NZ#4F8tE!8BR>|-5eKg)vb*1SW}<$^$g*wgSe#or-Ua2@fqC? z5WY5uOS&KSky1r!4D`?T??U)`H6NJmUqE=WS_I7YXZmDSDs-|x+h>Z}r*TPlw$D`6 zza=-ZNPV;M3@SfEP1Cr|IlTzaRBvf~-@U^K&sM6HlwaB7O2TtgUtlx;&Q}997W>Xu zmuM{Zy-8gOZ06sa)C5fzdoNJeYr4$83)C!47yI9=7MS{&e{WWcHC_B+p<1EoGXE}A z>rH*kzqhE(8jFA2q8`y${Nq;jjK<<0x2l&l7XP?Sy`{1E$8G8(;O7&?KNhJkfTtw< zwR|$^XOa3r)5TwISHEj|%at>Te!DuT>Eb^nD!w)AcS^#$tLGBEM5P1s{5-<1)M9mb z5c7P!R2?0}JYV0TP6}e4ua~RgLCo`YshS0B=Id2zTM#d#_SUHHgP7;oJFG0)%ksJDR4{JmN2X~X5s{JmN212+D;S>?24y7AX7sy?vs*DWev=rn)x_}Qvv zX)NRCLG_i!GJdwHliPuxCFAE&RSL}W_Z`%qC)CRtKhS+0;ipvNW4Jue-`fa3t9oku zV)v&BKd;tl{LRMK2*0S_(zwkzy9n=4jgOW3_ucy);g?lUjaT;ANBC8>2H5oXb@eo` z>F*nA2e9ey8|p2g)A;1^{-$bqoaqmb_qWwtU>=`IA1n2qdPw6o=j0N8UnR6R^5hfV zrH<8jWsl(o|5oj4~}1Ut9Ld1l%7og zQhlQ7eS0$fOZAnee|I_4zfyZN{kO}R{*~IV>93Dw`q#?pK-uKqpN(ev*D48kMnZ>? zO#en@YWis-nf{Hcr|B7>f2)qv^oF2+t6BG~qy530AuBHs^c zfT3@?fXe@D7+}-hUuqJtY40yJ1^5;< zY~lox_b;_1h^G+#TRp4sRd>xKd_d)OV);$|gX-`gzM1F;)j+}8-~HCbz{cPG)|Hwr z{vK~#qv_)B@z(X4F8-Wg&D3=9=LBnkroV#ml4zA^`Ue;0-llZIOc;4D^t^VU_QvO>S=oSyIv-Knbwh-KIpEufm;Hz zy*?qFWt|?xUlY!@rfGci_#X-9SgH%RZ|s$8B?R$)qUTzz1Z#WMwT=Te_Nr^0sOh5b zde#}5F8Z!#ovZ0$ufweKHC^m=m^DPxn=JKzqEvlrq^7rBng%>Z=vto*tVu!4^JfF= z9$jDN&&JjRy1vYxjjbm%UHqwuwO!N2pPE>&X}Zi$O|ADdUFN5z)@Pb7@;9@-)^w4- znf0@#%lw&d{h{eHf96{;$3wpfGJhUrB?C`Mkoof{D;wC1=jPU7nlAH4bE}EQGM-yl ztu&VL+`?)v_4RmeY4rm(q=lVf3&nFXe{luvaZ)y+G}Oa zlKQ&6*48>;(_U+96R>Howe?UC*CBhhwzli~kB=qyS4Uf~0Y7g&KK9I08UL>7vlcX@ z@@=e`6Ig$Se;cb7F!N`AZLDswGDn7`Xd#s@K*UEOg?}?X|T=XuSQN z4`{w^YdxuP%e#dBJFttvm$>Edsl ztbv*?1Hi;B_Z=Tawe|sgH|%a^md)>J9Fk_=D_D$r2Ql0e7;56Mi9JF((Ed&AZzJdSjkVWD z&g~m(kCPVt!*SgFpJ#GegR(Huz=jc9vdyT zUyN@YC%3V0fg8u&BPZD_)#rR;T!{-d+XwbcI454Xll{7Mwr#XR^&eRMR2jGZsdM;8X}?pi2n2l@*sO<_(1%4@(_C#d^2wzd6<1C9FdSu z9%-)>W266M+g7hVK>p002=`AoMIK{c1Fy>$d8Yj|oZDRF6YNzQ+2}uk_MB{wlMb}! z6nkswKzmNHci`M!uHh}JKh?e+uHPW!qRlqL9^P0i@2Y)mgVN+#_6&Gb!?($E?3dw| zvi^K~OcO4j)*zAch4wY@l?H>!OYELl&Q~{_OkQqJhVRF0Ag{C^hkvO5Jvq-_rzw}8 z5OamR&b|h&66d&NvwdkV7RPyNBT;{=eK_1WrYz+oZ_6`Jz1*-dblR`B(cQ_+0-@wjY30^0^Sf2IDU{W4s?jzxZEk7>pA z8xDAxTqI;5Jf+T?WM{~Jc+-G-WG&<)=<&Goyc4j_kxq``-x(#S^0Y514! zW5~rq9BsJ#naC;R=R&%{wEw97VI-H?d3 zTt8<*DRP654)D`@Z;~5@Y=^tc_HP<;9o{6{zgbB1dt5(U9^d96$#55Wd|QPaf?LV< zdpG1Uyic}YQbdW@&5Rw5;k?qqdDZ1L_YV|D(K7=Jq0i z^X*!*sgygEJH-iyD(A!ty935}dYCegw-%bmTfHjh@zp}}cxs`!zgTGQFBY1|SAA-E zJlHwi5LDrIlGx~C*=k*@2WhYX?e+it=RTDsi331C?{)N03vMf2c3|YeSVM#LTCBm@>E5NaZSVTPaUho)L3`oS}R$ z<~})7xpAC%-DaDld`F&7Q`wT zum5;qZvX#y$n4brxc#DG!FCRc9sM8gZu$jzL16vPEa_b3#&O?LzFhf-`q#)SmG8$m zZ%}_)c|uG%@>j|;q`yJrRxqhE=8R=rm#p4&!_LNf2 zkq%d`EuSx5RQ5I6LFHdko)B|}{E9OF-dh=gk7#g4>oTz^381oBeHXm~^9d*tPg({RVuJ;^H_ zj_zE3L1Zd9hP*u zR%6*pYTv_-(#W|#c*OA%^6rZZC_mz;jGX(2M;+CX*Ic}r@}rI@>A>I9k2w;Q#oyC^ zbaYUjK>o>*tStVXe!?+LS^Pcylw*^$7%vp>Kb>)0Qx<Cns4y_;O+&_NoNQ1e*_>bcP%>84#GqyjM z=l-$Nxd`U|aj5e#%>85CnKXdQbN|@m+yZm|*yk)ckaO-ITh26T8Xrp8af|+ba#&f4(G zdLpmnoCfco;JHoXE6(k3@#yEtZ#pZaaQ*8O-XK?ZwuIk_u0^ipEP!njW5|)tv+#S- zEy#79byB(h&Ad+J2F_k^L_$AuL+2K_MY_lvIWNOs)f0JRXZ0amzxc$_sOI^YiBRmCi6t+PI!#W-*euElV#q{S%0XgA2>fd zI6ssQoSz>!dq@Y)&kvjfIj8eeJnwwyJPq^t*~M8qO)O8GpW^wZyE6yo=bc{8$1p$d z^mVrUn9K9?PCw@gn4fnBI7<%WoX_7>=V+Lpcha2KVSe5j?u`9}%k%TjDCY{8pLafW zYQs6_=bbUmUeeiUoe$uyso#;OI?Ij_^~L@7AbGko4er1EBst5u z6h07tft>Ap3df|2e2%lyNUp!Kp2+7pN5ePs?vfWc*T4}8|Bx3tpTaHDMZVZsX%yH0 zs-DPmooVp?3C3@9e|0W}i$}jeUg7kN=JMAkR3qm(Ys2qEN0JMiIk0VFEP11IH~e07 z8}epng>)PJC)-whVmIT9*1+Ai~KuhR8&JOU~i&+~{fK%g*C)s?4uB z>6JWLev-^@IFsO;d5ft0ZD$4?k+6aMyYn*KfB7NueWx*w>mP_eMSkQQ2(Qb(PX5a| zAI@$5i2T%fPdd;(&z#;&Q9sZ=HdhJhK>OHSWjVL=^SIqL8s_J5hwD1bzh})AJ6x zCBX;cKO|Rk6~M2i^e5MForUK`eL}A7sxyV_w@R5puH)(jZ-|;luIJhh-^^P}Zs>Xd zMKMSZz_v92_DpWMDU*D-iq{y8e2;Cc$@Hor}7;c7Ka)DQGOTf5r9-2ZIt z>H>5BvyH2dbfEv)#+8Dc`=5!fPmpu}GtrfSoco{ex+Vqc%l_xPu35;r|Jl~{In4df zwyxzc_dnlrtwnwAf4=A1jGX(QNv>~T?tdn^_QTx&Z09-#bN{oQ>t~qzpY2^2VeWsn zciog0?{kXrj`v-ENQ?J5>E$r;-^h9Vql2r+bkUya+WX5wDevI&Nbl8oJmdpcG2}g$ zcq#wDRR%eak9_EQ8TrT=#VP;L^#*btFX`y2iF|!-IOQE(^^o)UNhep6K>gV-QQpbb z5;>2jbao{nPg(RD<(*xfr33xnF0Mh!qW{~?HCkEpf4jS;DU1GZPuE6e(f{r3`dK>A z|4nukogvyoSoDAUyXq>7{_h}Hst zVFtNW=vnxe?s??!P$QSipNZT`ekn8y?wWd-{Cenq_)ydta<$O-C0xE-$}RFcp`+oM zQU8z|gnE{8{;JHIg+{~kWZow95Zr%x@w;?=2&Gr7=|9=F1MwBeT|+bA3a#HJ_YEz8 z6C)dt`-d9Kx%`0Et;mBz>%bc#+mnZc&WGb$_auKDx*r}JIfOhSG~x@cpD6QBLp#7z zWIi@@H$1HMcq%_J^e((BGK)MVwB-t}ze%?LjL_lmLD~MZLeIi;Wj-fVTgl~D$$Wlj zFSwO#-$kMG;eE1wzX&b6ipz(~_R9}Vgr~^%+Z=iUzB5>~|IW~2tGWCLnePu>1ox5c z^F!z%c&%)oN?r4U5Cr1JRv`)6e}@S&*E z{Lvys_Gl;o|+c*EK&pa=1bN|La;f9JxTe?^#)^05@A8-uJAmRbgZKRkRw)skHnm zS~HaA_chJq#@LL1L{?*Vn!ro+&*VMMdFD8q;rnZNT_1Dr4D~r6Ab{6I1M#=XJ zwaak(Q6jIc{ie!`_J3P@sJxK2|84F0P4s_L`@f&QmK>#(hkK`gCH*?g`&UoAp%(PqJqvVM|YAidXqR=&^KNc*01tgn&wlkyoV-$=WJ`n6K}QoA(PZo)As zB5$nSSLH=}Hqri8K2LcQt?ZZFp4?u|v`W%}_YIqARgv@g7_YsJoX^L2tpRf0-vliV z=KW33+Q8ScZqWLgYwyF4vVNEDCLP${7TU+0V}Dy{>B{2#XrWC*{S7JN{AsD>zz0%9 z-cnmEE#41*M9XibZB@4aLEk@W$KmTeHF6uR*k-x^SYM(RuI#5gQG1(>_c7no>PrXO z=RGYB`H2={dy=%)$gi{z+mocdkNjFzI4!T8))jt~RbD!ojrF(JQk7q&yuG#?<#~U* zXosZJHQwJY+6m-q$JeLwUA6xq-#)&X^i|}O;dP_$lZ#h`xy|sqOKNu|X-da58XrDe>qVhn>`)JcqpU?k6+8mhA|3O+VylTW4 zDnD3T1#cTMQF;ShbE(+B6m1*aXsOu06m2*B^N1N#K2NyCi+qVZU&m?(kZ+Rb>sakaM0;gw58!r7p3wG;*Pg;XmpJYVJGYAc8LQ>ZG{_UQFnGtz($XbhKAsb`7hpb~ z6SY@hKAw}bH(@@WleF3}AJ55JG|b0yvep#l<2glZ1@rNoqP2%l_I!o5XR6i(KHsyd zbYGZ{=QJ$^=Hod{8xEIPU5Cm~*D~PBs~bp9mJS@x8QLb!aemLxzE*BZe zZOB>LFYsSe+eu%B`T9CbyAAX8b(Z!}I)h1wU&E6daO zs@ghb+Fe_&_LcI-w7gvHC|esiL-gmCYNz0lGem!GsdfRLyjZl?GVMA%XR%n{GVLB4 z+p}DIqMSj?U#`{OPQ~c=Fgbl8d7TywXQwZdZVF$^62G_gS}XWbmiWD`*V@D5yNUI0 z(7M1gx{38~(E7qV3q-zAOM#CRh#6?k~1?n-&I_=r6W+ zn^pqu@Uh6ZYcIgPKNk6R?G-lG|F!m}vS_cbwYn(3TYf*YLu(8lTP^Y(S_@U47H|7T zdrx^U?e90*aFln;>*p>lLpoi1US2qo7hbm0E=qxKPUUjI+pNSN3ElQs_K^&i)!!o2?DT8^~n zAJ(SzozT`PHzc3b4#8&!#*t5Ho^OKN3BBUHNaj?YbP0qXPd{asrQ^YQ&%%ZEEp64#@<+Gcpb zByl~utL=oFFBkbeZ9m+8xybKnKfsOU{qzs*XE;gTPyf&^!Dl}e_3vvp;p?A@`uDZ_ zY;6An?WuAKZT|x;^;;@N*Hix9&aMxK`FlINJ_feS?}2UK-*?3Q zFI2w-7mXCx>rnj`%+IfyeqTE9e5UD7ksES6L)RVOiS|g>O3CpIT@RBUi{GzXFOHm# zuUmfs`Ktw!sXdG872&D{Go{~z`T5tQ*Mj-^*P}3_g{K0L4g1@rmv zyk2CNXrHkfACJ;{QJ9ZMX}uV{tFJg7;d(gyV_$JR!u6M7K3-+?Dli|fGI~vz&xaTE zx-g#)FX&BRKAtb?Eu;g-^F=)gIsYEZ>Yb4D@hYqLM$X5(oIVISAMbMdFwW7w<@HaM zS5W(w*K<&xe-9P(MKJ#!D(EX=-u{>Mbue%L%lcL}mS0idt-O|&Ur`U=&F#y_?@he| z%*XFdy$a07Cql0Q^YMw$>%x3|s_KnlK0a0T7BIJeHT^x9+rOIL3Fhs8OYa5q_P?bM zf?F*9j<&bD{xRHr@nPvtVLm=J^a;{|<5NSQiJXs5O?@76K0Y<|rO5gC)Y8`==i^gL z-y|LQJ=E5Za(T38ZT*z8xF6Kke`DkK`;Pt)=Jma!{|ir+*XKyxwTIh3TV9_db)R%# zeRcF#Imi0y=v9?}rv0y@w?%#4|7iU~>A?O+>phWg-XMOT_4NVp;SJ*VSzk|s@5%A2 z2Ks2!4^0($1ARR5BZqkS-qrRfO-2n>lI<% z{?7WFFhB2g(QCo{yw^pKhI#+G>aj5IUst`Abl~^UP4CM&_P3j!qC9}Mr<*<=^?AIe zhdv$V@tPj`T$sl%dg{3_k6-lESF^GFUit=Q@%!$jA3*se`S*rC`VVk7`S*rC`Wbj} zn)to-)i1$o)5PzouYQY-4p~*FGTk7wh|2k5*nv`Nw*9wpK~@A4cf?q|>#kvi~qb z{|I@CoG)plJ`(vTIbYI9eH`-7Wq)^+J{9>2+20+d=OEuTcLS|&w7v-W(YZUMS8|T+ zOV`&ai~e}Jeh&4yzdcsJ3UhyZto}R9&r9R(>Ke??OPRU} z^YhYpy%fyPOXKzOFyDVC=&!+i|DB+}#m4qe)FYL}c+y0@70UB?(qz3I%;QOu^)B$+ z6U6yEMehT*njp@HDS8SU%b%)$qI{6rZ>nB^@_ate(zn2TKF`v>h53G%tsj8-eweNQ z2#=NHE3@@8@KiazGF$%@&R8e5FGs%>$k&PO%h4aeaU(@OM}G<@juiPE-T6KJ54FEz zgP0F?t{w)P8^nCDbM+Ez?B6{71!Ylxo?Zpz`T9CvuL1Ml_vY($Re4&y?Q^}c@@Z-HnwlEK34e>Eq}4T8s&NWmgyU$ z1K0m$`gY`eJzK8thWUE7Tt5ugU2~t7_l14}j$QLa`W)<|ss8AFS^X;f{OqFAzq7G@ zEA>B>pQC)GUhELJKX2a}JzP4leQWfWkw29Empr`+?A|EaKTod-^Y*RP>%zQ!YxO2< ztUq6Gp)AJ#^7Ukt=k>4GQ(-=S>-7;Z|NV7?J_hE$zi!Z{z}&ytsAt36zuBlSWMloC z^e>df{bZB=HOlk&!Df9A%;N`}^&>EkA8gT2!aRPkML#bcxIccSKam#iUzDZx{Yo!! zShTNr|Kb($R{aHO@&1L#x9XKRr}tB z{dyLBAbu|Skp2|DnYV`ggI?*Vs4u=x+etp5PlMOxpCO;ox5K&3uanQ}<}pz|u>I%t zH>3mGe?hM)9oYU0dNk+seVX__@uI#0{z1+!az!_O5X%$qk36O2-_S?HRpLtjN%L#y z*J1v?{|~+8k6gZSOfAYE={wT3z>y>^&9ygf$OrHkx_xnZMkKr+LeWC7N$GLn? z{2VIpaqpKF-)n3k``i!ULs8$7EqCGxQC_^ydxTuVJsLg}d5T=heE}|)a+O@h?K#Qi zXGT3Bmvg7W{g-Qx>G{sR2tE++C%@{po#OHhM~d}VaaV?4tSi6F60>ZX*ePwjoidt`)Aab``^sn4c;gB zzqxxi94_~-wfinSMebi)x0qF1w9mTyELz_C?hH7$c`o?__s`OS_kBCLFT(u3ZzuOn znBVv9?EXVK@V;+n_ut6*ecvwbBEN|BrEC1YZx^?iC0qQS_&{gc z@5lCY?^PCiHo$#LI`Dq%V0W3bVt<9j`>?6*mddTkL)|Ns#rv?s+>ZZ=@`3NcM!Gc` zbuN4#cBI>o7T1Sew7nzURiwrB;UIaGyN0y5K8SpjJDPL*w@r?bN4s<2#&LJZpSmBz zRpP>)(D$6~PBcm=t{1JE3Xga1hley1+L0FzTRF{=IiaP zfH7ae9c8{A6q>IGzpI>o|Apq?d!hOFU1nSg#e7d11Uq-oz?2naKt{5ZAS5%(X=m_~W zBeeO66A4Ym^(u zO`tqqxk}tx@&@Ic_=Dul%Ga9SAa7OX?+te-Plz%8q50jFdHeS$SBZOr^8L!~8j14X zD<6z$Nd{&v)e_nY)%=eUEQmztrgM3x_#aPF` z^gO2ge1q4>x0SawYel}RJU&kNe!w_?A1U+sTWCIi|5Q1jzlG-Wx6pk47MjoBLi73i zSS^pw-$L{GTWCIipQ!SD{uY|g-@jDO=Wn5#EgMMt`?t#5E&1p_UYI-lKOQ*a)BkwL z?9BhT{h}$scJ6MP^&dBmTT6ZxSf7)>{|fO0?*IJ#ms@#4%yBAjDOZX6lU!PvzxR4c znZNgXMY&1+=bq8`3CbJm*CaLe_Jc_ z_a^Tu`x>>T^|w==5YwOhfij=pos=8LjigVJk_MrwXB@I)P93JkN<2%Vy59Z@L+0z8(<2%{Y66WJO z#ghc{@txx7EWKCf{^V3oZ|QWcf6ie#zEeGer31%znkQXZ9N+1l>B{2x&h%_j7RPs% z=ZtjV_~v*#)N3ppUzqEORu;$ib5D-4IKGQK52ORfcd4iREm1#ke3yD&lNRF($7y?) zdYVX!@r7T=%RDWl#rT5AmwA#nw{w4axo1Dj{pHo3h}&ZMSMA(i&iCZN++W_{(SGBc z`^#HA17YqjZ}*&rxxc*AlYEEEbAS1O=P}Iv$aH?dAURHP0fL`^&$3Z1fhr$hp7#ho=+F{pE+AoiO*8AA8EuUzx=C z$Hh?>slER842MhA`$t44|Cmk29KqrM`)H9#!Cbl5;RK1wYAg|K7rlL2D+<-;n` zD5xmkF-k1|<*-aRZ)6Sft6>fr^%42&b(@f@hE0RNAK8)oPMCw9T14KwZZf%kSSEaN zX@^PExNk~@ZF!r#_CK<*rN z0bW1q1i4#S1oaxl@-EapPwo+x3D+9^JGpn*1$bmVr`>K#4vVH0uXONB%@|Mpy*3y2uYF%ps2r%Y=`u75VtE z)9_T8PYjEotrF$0%X~`MXn2jxr-g~V;=c#vQT>@=e@Khp<3@5;*k97(_bBqLFbDm& zI6wLMY*tt@%+F_Y!p_3{e6}DgCWOoL^I2}#8knEYmWS0Y!Z|;mtqse8`T1;J*khQV z&o+j2a&UQmKHCzu6Xxf$ZDD1dob&V9jF%)FE>T|0m$Qew zFDwU+NI6OVKI{SfMbu^T(XbAoT%P{DC-U*IjqrhZQU6p}F^%&I6CRU)2}_1A)eEIP zKNofg&gv0Pz7!U%bNM@wHOV)^cEdOG+LG^u6?1bQkpQ%uaAN*WDj(|I4OeY`gsgkR z!?=9#~`+F&G9&*0FKkwZH^ZosK?+%#n@1?za zQJ?ScrM*Xy^Zh;CdkW_Jd${)k%=h;)-s>>m-^+OK!F+#z!TSW}`}+&t5T9r-F<+f{ zzJAf`mKO8XU844V(d$Rf&)a3arIB}Ee1r0`-U`xz`+qs_Tgu}8U*6kLS=|3CczY^~ z`+r66B-Ysy~RD-TO&Al4^lR|ubC`oSV z?F9EJ`KGMg# z2IldR{@!AxIOp+^!QND9F`v{l+MXfaMey9{x#XeV$8f65hj}YJ&)Yvq=EJ?i;hTA@ zsQf7J3OFL+Yx1XFtu&XX`N+s)z186Z@fXSCy;<W zz~y`jIv63&yadUwOERqZ-|?ox z6Ps&vXTR$`1h2~vC*SuzhI5<0MtUJ=U^^9hRaH@j~s%;RqkpQ94zJpLByONM#;t*Gx1%;Rrf zU*%VM|GK6&qxGA<;qalTHe|o=I9x8JBe{gH@@rgvW>hk{ly4H;fB7hK8Q)o${{0;C zi@xfwbNQ@sbI9d=8Sue+YsnRSXW>Kr50GE+Rj9bYlzeE*O1g(K(Z`$*r*$oc+X$5#dB`+pr@O_=ZhQNFsU&-ec* zUlZhf|F7$70rUO8t}hAZ`+q%OCz$X5^?bcyzW+!22Ely)kM<3d-mCNYWPRVK(qcZa zGSq(ceG`%Mcx40MOyoV6RG_?pZ$5G!zijARihOy$V2^p@#Wl=QcjeQrS1O1OCzTcHa|0CA-Oj-0l;(RZ? zDUPQoFZv(xzF6r%|D%O(n6l`9wDJ`wi~dKVPm2)s1O1QpeBGo2{g3y3ORI`J(EoVf zw?;Z}|9IbbKss>$=-~T7I&lB!;5*B?oyT)O@WoUU%ManV z++^Q&n8$NdeJ!hV&f~cwd}m=E&mH57slhpq=Z^QSfq6W4vM;bA4&GxIB;N=K4If**u=R+LsFRcy7M$GR)(-8+|cvi}GSVttNDQH~R*{N26Pl zxB8C3H}g7^cle&d5eXlWclr|F;rhRHpHAN8%Y@I+2L*Q9L7yj*^RB7u$Upj`;X_e7 z$Upmb!{t(rk}vum!!x5Ul5hAj>Tv!3%b$?{@NIz)#B20q_QY2wit`Gs%aH9xFE}x> zBH3Z=hX=H-LDq~1@P^2`+rDF{m3PaV)eNEuE;cU zX(JWhB-`&rV-b8%wqJR}7R}{b$^EZrREPJ;{jXwdfy3qg*D!9wQ{?_f8EN&oejmC0 zjg6)7TDkpA4Mzjco5<}?Fe2b|x&5t-9C%&+c-r2!#%?&b`D}8MQL3S+uYNB^O=4- zCN1WhT20$G(AW;&ixN-bDMol>-rv-;Z^=WASon0*A@VR|1zaxWf8>$Iad>9bHS%bq zaucrKHT6&OXGRiyDC!w`j8OpJ%qvPy@|nh2I3l4WdAw0Mmg}#}f1NzhNP=^lzfGQO z6u|puB#@^WS~D*H*QyW5GmPqRNS~hMEW?QB{QW*Dg=;QdOUqkfxLWe@Yqaz$X&<~vE`OyF4i8=?%C9sk zz$2H5@+*xh@IhIAmGKT6$77Yz068DORYn}l$8VL<2Ilr&ZM+Y2d#^US!Tf&r8Y3Cz z_q*2^L*So#i1x@cM!>gwi1x@c#=_0UiF~aw1@16T z^^^9{{uUS);M9Tb8`At6hS8ey4$|w5Xz9JSHL^W67{5xV+xCnWBX=8&N7ACdA?kf; z{HrYHi~G_j)<*pQf%)RL7~wF_7q`WD8RqZlzA~!7{5{=QMol)BztyO#e1g`$)ks8n z{ylCtI>7vU+-`J-Yvx>{@?RVM;OLy+q(5R~`8$k}%HnKN`oCE7SUZH1451x5o+N3C!(r!U%bn z+mp|?lZG4S^X;VJhp%PTpyi!1O2dz`BBd)x2lnT*(Ta1l&uOEbvN-;yjb5nF*XN&& zfiPd6e>Of=<;8ZLG18SA(E8383s9c-=YPg>=?snc=YK{%a-P5KoUs`>&);^=*opjF zRx?`Od1F8PD65t94{U7z1>>x866F_+%5Ay5c>Av#)ul5qf7^8<3OV0jZWxV_^Zn(9 z(HuF?-*(ezi=5|gyJ>Vp&hxk3GI}EC`P*(81CjImZMTgyR**28;Z6VGhezfTx$52*yqd3R@J~c9xcTxGL#$(jy z^FcG|pHQarHgG;@rY=2JMbO?$h>o%ow=ml7FQW;Jle`x7`+Iz6;d!f@|pu+K3+a^D9p#p zXO4#Xco}9U%*V?xr^9@_Omhy*$ICQxVeW5P<|>%`Tb8*2=Hulzx50e8{N`@y!0{?( z-sT*~tC;yfxg70pG1J|S&%e7jgRi#VAe7$?ldA?C*n)Nxy z`bwHjmBsg=CC!eg&)!jvi|c8)nS=5v za{hrb<|256oIkUSxl)xE`~8BsPPsPi?+fNhl;`VzdGj31*Z=b7HTYUq11kTL`8)h5 zD^~h3%-7=zrma1Y8aN&-1O-Ge^Tb-&#F$yecpDE83i{Je}Gj+FXnBJfB%Z^GoRr%(vFi{02GCw-#gW zL(cQ9#hAyC8v_^6@*0_^;Zg%vNMB@Q`x~1#ls8b`*nFV_xAz?RJ#)NS5ndv{XO1`D zgl}Yv=aB@n7JNTj{N57GXn5O_-L$;sW-PpS$x-Q6F#jG}nC+wk-{ZD0yCCP^Lrb#{ za{fKEG*giC@3EEn3CzF8R%V8D;CyOrF5n#d+uB^NEVj3`xe4`K$ocKsm|w%4<@|PS z%)P3-XqQCuh_XfhN1}Nd<@x*Cw&rb^zprg;K7{%E+V{+VVE(@LJ=67pSZ-i@lgzTx zf#<6vvy!ryA1%pDU}OH54(7Ws?|%pLLzw3a_`vJ|^Lzmxm;+#*pX)<&D9rP7eQ1t` zd48^rW+u$@b9FSQv(cWN%sI-jw0)h-BPh@F`SdVP!aSc(5A!_C^9}VhufZkd{98TE zyD-nc)ysSg^ZZ-AO#6qTy~bjG;@+kX^Yyg1X~BH{^f8}@`TXf)z6A66)7N|*=JxAr zR%c`XlFd5GztH)cYz{(sp3i8o`7zA%84Wf+g?ax|%n2~>e~LL1=J^y-&3Q1-r;utc zg?YZIA?6yG=bIX0Zi4yu^O5;A%=`b5xfkaB8)_bbdH;r*r`XuPH1oXj723Zv)6p@w zeTSPK>A>^DaI-jap6_RbSqA3$enyxTVV>`2r1=Kw^L#%e&05HlvmemNged?M5Q7UubW#+wIVp6_S8`6C;5ttv0tVU>A6 zxi{_qD)TDp^YP9z???yk*Lmij$oY7$HJ>5pFW)raM_FmorKAJL zqriNFbL>xnSyNf;Pl4G8^;gOH8`qf$@Md}cSZB7C4lHlIIZ)LX+p*qEQx^Tj_2w+p zKi6FJXEvFiOQ&nMnv3;qGM6Lg^?hlsg?W8nnww$n4{bKTfw@1l+1xK3*q$xsCC;&b zTg;ovqo_T$n7*#uUOXSscJn#u49rKg-7Jfo=Og;stc0BBBl_B`ik#;o+F`zpoaZCj zVKzX%Ywi?U-#2C)@}qO-NVnk}+qctvUs=pYwA0K)eePfEF{i=Yzu05Wfq6cnz2;(= z=Ofx{u7Y_!qJ8FinCBzfXKsUeKBE2RE|}*d+HW3$`TlvpJPz~y^MLt3Hn#tuc|}<~ zZyq%NMtOeTJY*K>#_i3|n}(WoV!o^_<|8^{wnusXJsdZ? z!2EkSZuW(FKB5z53e58noiK;PJRi|XGXv)Nh)$Z5VV;lZlsPMq%lU{-nG0Z^kLa|y z9On6mPMi5K&qwsLxf$m9h<-MAvax?>%>ByZ_i)BMh4Oqo_{BUAbN}NP^SUZ8+V!k? zS6R$Qbk=lr=l16N*E!P*^Zo0b`5esi5uG<*gn2%q^JXPBw(o)&p}dUF-wWouD9_t> z+57%V8d0Q36qnXkY+zW;~$Cd}jef0(sl?tk4kqhaoU-8Y-EvHk~U zD`j!NdtmlNd467cWDbD&dFhdv2J`dMpXO+opO^kL$4dvUr;p7g$c8tkj z{l(vlpPAc`f8!SQpP754vu)Kr4e`+X71n8G@%Ob5E3B7Te&Bhoh*g}eW%cbz^@~^y z;4k{>RKJK7FP&lQIo%*Ttfbz&eQk1IB0H_Veb~KLR3p2r@zT4szlVwYSEw~jdawPT z{I@9&wSGo^Ge4_=&8Ar;`-=LzZL7!Br(CldOJ~?-jfp3RSsj(%BU{!;We@Go^VUq| zK9rZS3Z!@2ylcdAU$Vmc^YVL+XZMDmPG^4(UxqisI|etQ<-cS-hX49Rl&@fA4iNu4 z*0yZQC$zo_R+89F^28~V$*)*lrPFN@8yApYwd6F}bUd4Vyp;T!wGnxj;cLj1tqZ8X zciivs^zTbsf5I~+2v@bj2lMj3?I-+}6(gN)`|-Kv(e&>@SwrA1Wj53DYFcZ#JkIx8 z)|YIpT;z7jYgs$s*CW4^-uIvKwXI{)*|zq>4^Up)icb;i&$jhWc}A{dorhoSxvoC_ zd#2Vc>9Jb#w0=cs{K&cwC#7wqiqY0n*el0x>RXOfxj$NIIet^$3S(n?8(77a-wdPo z=d21SAD%Xejz>eQvUIvuB~9cFts2r-?T#_xdJ<#Rg5$ftO?eaRZ8)jBm|wV=6$$T< z{~lC=6%Y3r+=R+Ex649=C}6p%t6P`K(XY zkULo;qyxX-E>@1J(YW4xxjwH@aEKzC~o z{8ArrBKEKj!*BHw_uC%UNx1GBk@vLD!Le&Z-qX4U`(|&X?d@g#4nIG8hxB7Mj(2a% zHcW0Gwx_qH!Mr`aEfePT^|4C9yuLnGc{Y~U*Ln>(_jmeQ)nHy;Un>%BF6S#vwi?1o za=y}JE1r$z^|KO@8>r{p{6waKsL8HIZS=rKof4?BZTJ)d#8CLkGVtH5fxvRzXDARgX`l9~HYH`2Jv}$sW z#M*#BwsNv(j1GPwTqV_GVfGGXmQyes7u9NNIW>b3rQQCs~Wei2B*K66>?cQ>>O_+3${6L!N5QmY!}qm%oub%{t01xo6ro@^tH# zv}k{^{^{1!|J0vhO&cecm!;jD^$nGuX>G|2Y_Is=nbscZY}=mP{W3qUe1x23m6!KP zk^dy!SbDnc-4W->*;Z?qw=dh8g!1`$S16xtUFICyn`7A~1lBLE4>^`sI-8dFMjXvo zV!g@M{u=y%>d&=m!bMa5lCBGftQGk@s}Wp$t;pwDE!nn7)9pSQzp)A?iS>#06JKh5 zZt0Vyu{{f|M$)4FEXo&JiPG7&Ni#~37hBzw%afN{OW}7%yhdJbJ%xXq(vhyOE3B4N z#PYLkaVy1_U8}4uQ`ygY)FZF4!sL5N)3N@wR!QkBEje2ppS9NZ>7sn#_q5hJAf0WS zmMxCYTI-~;I6nE-CF#KN$hYpmd_3~4N;7!tAnWp!|Dz9cld=tjC;V|2J91W{LHQ z_gBULZnDCqvo(Fv04l%9iiNih8oXQNE#SR_hRFQAK>6OSsQtgR`oWh!W`73fjb_h* zQ#Y{l;gIp{J@8xo*}uU1rnB$COEcJ^*|L4L7VFq$;4j9p--2TXvYW!Em$5s-i@LFg zz(2qf;VtlDcoz0&GrYYG*FOy3>c##QJ_$d8AESMIvw8cEF6Z(u!yDj8xL^(Et>ElI z?4IxmY|jXIG|JC}Z(;ja!mjRI{~LHBw(kV|67pN{zC14P$PwFn(Y|l3_}?$BvWwW0 z`q!3@fH~i6#jgm?H(MQG&bL^#3xe}4RxHf||nQfXrk?L=^Vo;vze{Dr<4X*#SRaZLj``uy1 zNe7mZYZ1zG{co*F z+k@+WYt4r_|ISL=9h`q>Wx|~AvPvEb&UaZAr33r3+o~oV*q+^19qG?(9f~ZY?b&U0 zLVaG|9xL{6@bdOpZKVVC_gbB##r}x;d#y~A=lc7s)FZ+5_gNV*=liXslfn6Zs~61q z0n2kPI6q*8!<-+q9Or}cgH|z^^Y1O&h2Z>q%YZpQWL3HzoFB4k!<-+sTHX!L4_lpJ z&W~8t9|z}0tQeT{qt^9j!TC|^G0gcf>#{9G{@(cabIQRu&Ps|8&d*uBV9w859TI}`^Hws<`30+6^Wgk~ zl?roy(MoO+oL{tt!<=8TdbJGBFIj0Y=f7IrS_S97TB$JSm#sssgY(PQS(x)H*8cXv z`4#Il%=uL-rbBRk)k=gpzh+hM9-LpZVqng%TgCbX=hv+YFy}X{okN538`d$H^P5(| z=-~XOwG-z2mQ{9qaDK~*fH}Wy&7TmQ-?rAkod0Ge&J50fv%0~Y-?5Ho1?P9H%P{A^ zTcZ~Q=f7LiV9xJaCBF#H?^=~$&hJ^n*9YhKtVuBEe^`~a2j_oSwPDWhTZwyu^ZQme znDYl#^x@$Afz=Y`{GoOGRB-;#dJ1#?$eMN`IDcd2ZW^?}7T5&%( ze{5}mIe%hx_&Yd%VkN_z|7F#F8l3-S#loEbZB_p#IRD#|Tod080 ze-@noW5vLn|7#gGdhDhC5?{anwaUVrKeLM2gY#!r1(%>@y8i*p+o$^-MT2v<{}{}<+kfFdc~Spy zPw?`K`Y*%0evf}kSa9y~?}s@L^Y8Qq=VAV1Fy~(Xc3*Jr^&f&c_xZON!MV@BALiWf zZz&m^8~*(;=cYfoY;bP+hr^s({%+-hbIYF!bME(dDj%Ht{R3gni}`b23(kxASHPSX z_jh_LI4|xW2y>l63qE){$kUD^Vj?pV9sCn8`FdH*ZpN-&MW(k zxxsm5e_5FGD*lYc!Fd&b7R>n@{--O0^EdpSRcy}R^w(J*oWJRhhdGb%$7~DEBm9Xl z=T-eXzYET*`j5e!SMx`IADmb7w}d%=%b)gBaQ>D*6Xv|SKkb*`yt+RV=Ddb~%df$C z4gY?a^P2wTTfuov|8SV|TK=;4gY#Pc2$=KQ{^NfI=e7NpVb0(7pZ+^If7^c@=KLN1 z#;3vgJO14;=aK$`e}eN!|IYto?`+_+tm?*p?cRNlZ470cgF%fF9Vs;wY^3Bc(2<}+ znT~=QB{~#xDBwuYq0Eg08wxcPbQtImro)&HlN<^*6l|2#P^nR(!=z`F)F@}8{=ajb z@8!&*R6>kMI3^J?A>tIoI2L-4osV(^SPjTz{IXMz{Xqs_LJvf4HhaxBd&% za!($kzkmL}K&?Z!{x7T2DA)gGRe^5(BUDMq^^Z_x=+-|{6-T@Nk*XBk`Y%)q!><2A zwH)30FH%Jj*ME^JLAU;NH9yAnr>iCC);~(+cXR!tR57~se??uD==#5+W}sXD#j2=} z>%Ul)pj-cFwc%9PKU!@;xBf9|)tRn;jM{*1{g~U#iYK&-GubMx$GQ zhDyHB^=GJ5bn73h#*K0PW7SpY)_<8Q%5?pgsSL=dR2jFr{%@*m zbnE|?8lCU@zojOiTmMyROOflpO1+G3{gc&si(UU@H5%ReuT}~7y8f$G61w$YqpBZt z{nw~kbnDMiGahmMIch$-^-oc`YhC{om5*-y*Q%-OT>rId4!ZSUr*g|(|8*)K-TJ4h z8IQXDscJsD^-oi|kGcM7Dj(hYzpbV|>H5E|=Ac{u^-4eM`ma~X=+>XB@}G14xvCi5 z`lqYh?XG{i%15{U8&tzC*MEa*Lbv`KRrYUO|BWga-TG&!+BaSQ3{{VA{WI0m|Ks{+ zs_p33KTGBQ#r4lp`RLYvlbYJ(`fpNm(5*jD`e&=re|7z{)dY0w|Bg!k zo9q9M%0jpPo7L!dUH{E$0=o6jQ5nsye~!vVxBj_m^n0#u{kN#(zq|fhR4Tgl z->Ob+as9Wd!RXeXuQDPL=lq?oveB)7p4uMc`sbgoD# zS2gI?KVNO=>-y)bE$G%?pwd6(`U_MRy7k|oUQcrUcc^#Jt-ny^f7%UWNILGzhskWe7|3Wo5)%7n_BhamX zk;+YT{fksSy7k|sUQc)Zcd2*Kt^a%KsS(YAU+*FIM_$*S}aL zqg(&oYI&~fzgw+CxBh!n{Y|d_9@U6${YzBCJlDTOHKAMoQdRX`*S}QNpj-d<)zrIP z|M%4#bnE|toDW?84^#@e^_Qqq?{obnYB0L>FH_;=u78=*=+=L)db^GPUiEGp|9z@q zg`0n$YC^a9%a!+l>tC*VqFet8)zZelLM4>ic{ zzf?{5q3bVIQ_-z|rOICA`d6x4bnAamjacpaA5`Pet^bE=^h2)yhiU@4^{-On9(Mh! z)K%!#zglILx&GBE2i^J~Qs=F4{ST?p=+^(RN_xcgKde&Ft-nn5S?l`C)S2kkzeb(6 z&h@WRqtUJZ5jCOQ^*^GfqFeu3mG-FXU#l|Et$&?Lf6Vo-Q(5TNU#>DLTz|RBMz{V) z)#&xE|4}so-TEI>>5seq$5a-&^;f8OH@f}`75kLct$)3G`8n6WUcHWP{g11uJ6!+c zY7V;f|47xp?D~JC8quwPgVK9k{|1$eZvB;N`|Ga1QoV+5{ZFWheXjorRgG@_PpS=X zxc(>A7If>cQWbBy{wh_CZv7k8!UosBQ7uQe{-@OZ{jUEhwFKSzf2{J~a{WJ6#pu@m zw3_;k>wj9!LAU-*D*rv#zeyFNTmMhg;82Wn{{D#?fo}cJsPm#-|1)Ydy7gD95nN&bn~~W z(oeent*Qdu=0C4qKh5<&uiino{-3J!vt0jARTjGS*Qj^Sb^SHUJJ0IYzfC2Lbp6{@ z3cB^bpmN8!{ufj}y7j-PUe0p;FRItkt$({J%69$RRSCNF?@&3DT>lQ0hi?5Zsj1&| z{V%CG=+^%;HRD^Z|7U7Gy7kwpysKP)ttvvd{+%jovg_Zea?q{+=PLVZ*Z*^si*EhD zP*+{!`hTHjpj-dTDksPFzpV1mt$&wFpW^y=sVsEs|E0>f*7g5VWusgFuhi)4T>r1s z1a#}KQ@J;~{yLS9ZvDH}%Qw6J-RgC8>wiV%&3FB;s3LUhe^s70yZ%?zndsL4ntFPP z>wiscN4NexYQl2Yzeio`>%sdhzgDw+J$N7G*DBxF3%!i!DtRB}*J>5{w%%{l!WC}4 z->7?iJ;<+Dt9-rCdp6GG*Q@Qs+x)$%>V7wWuX^6sgZ$sBT3yk<|4#kG*Mt1mRcxv87kXdt^Iuoz`Fij^);_tuar5`7FZp_q|AtEU^+NCJc+>wk zR4(zh{WsNw2i^QP)wRAJwjCF`Hbs-Tb+k){RdRWHrIbZWusgFA5?m+>;HqwLbv|^Q5))9 z|Np2h=+@t;ie7j9jj9CQ`VXp<1Frv|N<+8)KdRAxas7W(6VR>yPb%k#>;IF=L%05S zR93i~b3S`V<)B;tA@y{E>p!Hnqg(%<)yutI|DVbzo}Ed?E3$v&hqtO{=KWt^YudS8?ir^ z`S-5MCEn&YtDF&TezTh8>p}i|D&N-&p}iM)XTnJ=sgi*`u`6VzR1Sg{C}zzbo+hZKUI9X z@dx>y*1lfo{XE9>-_z;79<2W;tw*`-N9ogiJ;)E~6kjj&-tgNG>1^U{`_X#bSKRz) z{Y_sF^22(nuNQh#x|#lmbrtb8KcZ_ccJm|pm%bk4$LM-rFZ335GyRXz$)jz&&F`iY z#<=<2^e25i$dA>@zAoeMw;!u>iMRQ2dd?+oew_ZUuLt?@dWo+WdawEU@p=pKHov>B zy420@uAleyAU{FZ`g)=KRL=B2K{pX^^Lyy(3^%`re#zH^{F8K@uNQi!`t#=`-9o(0 zKUu#$*3Caz|JB!n{GQso%=invpT@o}?f2A!eLdL!i8}dmH$PFIL3ov#;q!~OQPewlci-&!)}N%;O>+H7`e}6Q@28hv>-ziYb?DarY3<$U z`ai9EqFeuGbk8}i|1y{q{WQAu zpROl7;QCM3Q_-zISL;%M z41I&I2m9|#J;&Dzz24paB>VqNy^eUBKTwxGxEvdpZ_`iHt{z9 z^ZNB_H~;hckG>w{r|5Tm-CVz!_EYqkn{B+!AEc9>b@K=5&-r?gf0j=5^+NCOvF}O# zSvrS!n}4>R@SK}}w!YTagZ#mIhOZZT*TtCp!TM?9ZT=8lv&GFHqJQb@LH;?q-q+3b ztI0n{hqt=@|AKx8-JXBGp#S0PL4K-^ecr?udZS~^_NVH>z8*^=X^cL z|DsOy^+NAlKmUt5hj`onbM=H8H~(CHt*;09=jj=~Ug%Bq^Uu@EiMRQ~bkR09f0+Kh zuLt>G(xtv$=q-&m+y5n9L%hvDUvGH9%|Bm1>+3;&n%?f~h29Q-{L=J0#M}Jgy8cBs zf4KgGuLt=T=q6t`*UzT?3v|+U8*lT!tYde$`Crz3(5-)jZrbJgN9gb`-TaZd;WgJk zQa7R7{0sHyeXjpPJptYNFVbZPT>nM73f=nCb^0OKpRTX)^1iIFthW$v^GEB2e{u6i>wA4Y$RDFu`MO!3 zru{K`JMlLE5?$5g=3kxbR^4E;x65Aw(AcYWRL zUz0yppZZrDZ}TtH34e3*FVjir)_=J!`lsu^T$i9*|2W;!O@0>n{`(~3bV97vtv^%0 z+|%`E>etb&{|Y_7uj{`;FG08dD|Kpr*MFr>N4NegJ@_=&pQT5jTmN{Sa=PmuuhY=2 z|Eqd%vg`k<9)WKCU(=}rT>sZ}I=b~w(1Sng`X}fS=+-|`XP@o*C+b{u>;Jl*aIWkB zx}J(|{ol~x3tj&=v_`l7Y@K_N>(AEt=+-|;XJ@$nNjewZ`oF2`#=HJ+>IQV{|CY}9 zmh1nP&PKQXt912suKy}si*Egs^|%{d|73j?y7gbJ!#BJBtF=bA{%iEpx4Hgn^mcUX z&(YPlyZ#(qi*Ef>^waZQ{}jC)-TJT9)djBqT3w57{nzP|J6!*Dx(wa=r|Knzu79dt zg>L=RbV-rxpQg*ut^eD4`2yGfZM_cN`mfg|-*x@h>oRof&(*niy8c|9k8b_b_0)x~ zf4ZK7Zv8jtoJFqx2Azj){Wt19OI-hr`b>1|pP}Df;reIj*!!(+{WJBc54rxCdN8{6 z&(isiy8cVy(P_SJ&M&9S@pX>QCEn)G)mPQH`E&IRz8>V?qUZR! zIX{^ETl6a8ZT_uV{x=BD@%2`Hzpn@R`MS*4<^DPLEXmK;wZz-}dHU%W-28d^1z!*H zZ__XPdZBlJjLE-EdoS8}n}54pAGrCq>(F+i2l?}Lg0B~PdGRKHzE1V^;QFgTpSr`% zFVJWCdXRsIKF`++y*J}b{vG-%;%)ndI^!ibzffnRTYr(>{xjEKq+dg~{ssEHI@iBI zk4Crt@9NaOuK&9_9o_ox)Z2gS`tQ`Qptmr{$jlj-TD{nx)#^JST~?s|K0kXaGW#0?$%z! z>ehdcUed$$-=kNdTmKTB(bx4a(b?$Mzf_-hs_S2>N26Q+_w|U+x&H6#ap>0n1Kl*l z_5VPJ&#}7om*_fldw)=(8`}7n>6gFY<}cH)qucy@bz`dQzgM@QTmOB!VW{iBPdA}k z|8gBZ*Yz*g8r}L==u^*g{VVifbnCxgCl7P|_v=)2>wiFpzvTKK&>G$POLfBeuD?_# zp@PULf4!b_v+G~47ouDL<9fy%*Z;Vlk8b@x(z$b8 z|Bv)7z8)OEH|RTjJ@|fWgTA|+|6X4&^iB&8m*e{eU55V4o<^_KRlXjaFP_k8`EGkp z=u3P(sQ;w?s;>v_KdHaz>+<|DWd6R@lX@oljGm*VewEHgUl?uljd~^e^AYp+T%OXa z&}W5B{!{u1Uk~d4SXbjeka)S||5(4>#{aZ_2mjrD%-=70TF1>Z{SWdtY3=KU-sRoQ z-+SAnXP~c5H1V5sVVn4$=g{tf=kiDSiIt^d)+ zzgfrJX8Kd;o!{U1H|v4E9`x^7Jp}*$fv<@FS$#^x^biQl20#(!Ejv;TMKSKIhs(!axhPPaQG|0Nxo zZ};C_{(SkFKGoNQ{?_UgUk~TAjcD@`|3=PM_@S!S=tRr?>OZ_Vq&VZ#{o1^ME|vZs!jfH^cMW{VqO>j zZ?ybBhP~UbkiV?x^|;P_o;&ww|4tp(vuDWb`*2VB)#Z)?6WP|%Q)(J-2=B^yZv4@` zM{D=!y|UgX9yS$*EH>L>KfjmX{b0L;ugx{~Al|i@$S`$gJ=)sywxe;P z<748BSD9W-9p`>-9qnU#O@-F+xA80IwN^8GB-nSh=kC9A=N@|>nVQGj%CW0;wP!!v zNFKZ0V6PoJ@>2hBP4C$=;$=?lDeoZ;ntD9*!OTFD8}fQry79*T!1s*(lXUxt}-k**$yrU(U$*r@??7`qF>v+9pY~2d2{c-2Bng6Y8 z>fhgr-3zu4t$W1np&3uRPJ@01miB8uu(xheVCgzC+-8)5cymlJGqdxxeUeD^uM!f?Dnm6>~qI8;#zF4I$rU1 z_m6uWx2rRISA8>E(b=)Z^J2W@LigBW=9L}Ee_g!%e|7w;wOIcM7T4z9v+GtqSXTRO zdG|82?PeR>&WdB%J3p!iSx5J_Z>zICWyZNH`+xKJ2P4pa8w2~%N2YUc$Cc92GQ&UC z?VQuT-LCEJ*W-*f$KLkG(vB?#clXDRG*`CfTH3Ve-WhduB^*>XSzTQx1oqBHEbz7; z4SNjv-*I(e?-$ILM$6Tg9bvPU154{!zI|ldJGCIb^LxftZ*VshSlZV&V;e13Zmm5D zEFB|FpUsgi>|e`8{A;-w|5~nFyL-K(NA{GrlY<#$W>;{ZXg{0&1YR>T=6WyK3UiIu z(cAV8(ZmN&c#gkLSF`%)_jgD4y63?U^ZCF3o0R{{SH*S?m=S0@4+Bg4b!6bCawv)X#ySshq9+d6qV z;jEXgBHfsO|BP*WziIYJTZ_4(`|x+5c5axne6Yt&D{c39*Isi5x8K&?nqw=tmi8lW zD+iJGZqBr2?v&dedAd3pxGUOTCI0_)?`%ig+!+OlWi}yG{d3`%yY}oqts; z$L`Ouuj`K9+phNbhq;bAp4|WbYb`s^KYpSzSk4RPInT#WRLt?A?bG!S_5|#Mjb!Ip z!IKknJa?a62X=c*GeF;A=79?b&F z2a7zu<6h_Y(Pkvgd~Q8To4$2+$896s`)Iq3N00v~E5~;7jds^Pmp`Q9KRXScng)CA zSpEO^wDLj6-^||VHhVCzw4Y0Xy>*WSmaZe)KK}{gJAeMu*4wd_V`T*+5Y%bkt6+_^ zRt_v5Jknm(9Bs}7y*gIpiLZ-)&%F9qv=Z!*){ze^?MFVa+kM?J{#bM1MCMypS8H}% zcja}j-n)L{ZH{c6Js~$oTK8)IM4yD)zL|ETrGD%91eW&W8Q706GMKBTS8eZ}Or5U0 z#%{LDz5efP^vu29{rM*H8xNXl!IiDC+qZBpS>E1m-<4f6!}Mpc--jT}Mw;Aj-`@K9 zX8A@wd#_N~#*>evdVS8w=lkUk|(kHg;240$E~JKkB- zj;ET5+2}`_e?wl=cTJu1W$QxTeGj=6jNP3%m&`O{V&+f8TXmlqlOM`l?Iyi4WAcDJ zJ&5z_H}vco?_DJScK5D-(yi9jXVZ$A=OOPje|~%b7yo(rQ9j%p*;ywHf|2I(M{j1ZU4`u{x zTl0#|{J-`QvtPdLudln?M0V`0$u)26hrF}LncT39eAv7CUb9cl3W|~62$+4^=X|qI z&EAjm$06QtvAe%#6Z|>Q<2d(k$3Apr@wdz0BW5)P@AI4fM7(|1o4%P|1>gSLzL{}| zmmYRi^LXs0T{9Z;TMYjl+F+bb?yakheSq|;ZGTKpV*C;7=8saWKR#xxj;F=WW9&Zt zd9mv?eY0!u%_mJC`pGXW!rtn8-5B??iMOli)dx-dKH0NjIa`@AYAwoFfg zl@+Y_j`8g+CNem4nF{7CW7;*xgcvzuw2ybkIrwb)V2-gNIpVqT#%`}P>@|ZMZ^zBF z745ebK1y4r&e6|q-DK{C@Fgx3kM$FFjmg+8Wm7 zo-%c8{Aa36-yW`Td)~h0VE-D-ym{DqbZ!0I*^$k7-K$e`$I<$G5YspJsYT#5JvpA= zo7gK)dl&Pc{Uu0e+i14JePZKoU1xT4{cMidU5`m;SzWbqqSeft@AxeAgY~)Vr%9$) z?wjhtzB60xUaJRoGk@Cd<*p;!-ekeA^f1KpL_mA&IC=x8x>yR&;$Q#06i zoqul_Ej@8#%*rx-YrBq2o#Tt_YMn|#et(%a@j_l#)dFu7aqM_3c8`4gOPP*ib@WwZ-el`+4jk)uF~_^_Iy=+3d)(Cd@bANPJsaJ&%rV5y z&yI86Rxqn6cn;i|rSq}stY+uq)3Ij9{ngPD?LWVA`xY&~N$+g0wThWyjzh+F#_ftpv z4NK=|+m18Ge4ovJSSKMW?q@k!4-AK7LPtxkM8|X-7g%yS4a2$r~2IS z=|opoO?K6Pd<|yiZE(%@zv&vxeU@UjtFvb&f!#cx?D)*Yc!N7rGh3qN3cUSYXJ9{e zr2REb&|+(RTYLMSw0eV{1eW$a3G5v!w~w@aHs_=EzsfOJ{-%c~^438R-+HIuj{MPD z3AX51{b`+_A9ZE3Ep6ZI3M}o%(Ab0i+hd43e~#`o*Ig&_bgQ#5H0RT{&&N#9yN-0n z&|Y!b{=@d${PA!7?3*pYJnww2{$KvB z-+#kZ)<=EMZdZh9rR|Y9u(Uri8+&kMK9S$beek2Adu03fJYle7VvhE~mUjN+ymPPF z(*Nu)ZaVw+&Gag`pEBEJt_s@Uzgv69$c~n-ay#0)dM41mX2*NFjuyLLPVD?1>?51y zo`vmok^8sN0!#ZjZ|p~}b98Upm36dMjvZ;n?dV7BqxbfMU3<7|u79>9u;>j;e__miBwO>pI6CbMu_7?KNj$Y2V5R8~>v}4frtL|Aup1XHUJl zI&PRFj5#v@YkptzuX%1}R@{m7>R8X&+CLQx;#=pfIg$tW)Pc8sR%fGXkMJkf+hc8A z=ig^_)vLhX`L=X*%s1Q8b`=K}cYPguo!Vn>XZLaT_dBgel4C`>cYJ0%j}`w>Rz8vE z3CZ$2+{B;Q^8}L>9Al5QrR_(??D7A$-{1t>67 z%8Xv{PX3we%;%r@Z;D>)|9w~cKJ9=TjJ-na(Y)VV>;L~6KFrm^htI9`|E|%^>Ih}-Pd58+m4cn58f*_pY2<+ z|J}clG27L4D>_>2cA0bThx=Vj$I2hfV*1n7Z(+Ln4a=o@wk?zEzAJ9_QTQlt?6>Ym zlhyuxc=PtlzvA~Vt$q7&zk=y}Jjcy9`|gPR3Lx6sCD)T-e`ZGfx4~m%G&;{}J1fjM z+~nVXS$k)1ZnutY+ux*gRo}#S{2hwfBPZTB^XrU|UoG1I^-9?PwMfL@(i7Q6yJkQB zokdr_v*>tyv+E)_X13qgHU9D6&Y2qj_ciZbX6E6MPJX>&=EKLoy!g-l^1|+^#By_v zzFhulbd>x;(|oqi)1LDGe>5Zgs|(lO?+z2W$p1f{*a{CU^)3Ey3I9GWB;NiTjO7n< zM<4QDkUG)c{woHQK+=3i~l#drh^7UoFOu>?U>0)pakw zn!VCk>tFlX`qpByqW!F}XS}AqIg;Bf`~Ph**W~h>FF7_w%P(|H-|SVE{hU>0ET_o- z?=0lC|1AHX9smEZ(^?^T25XPBuKf&uOzgjQ+`cX&6Y{R}$H$C$n2~93kMjC-_`j`< z_J2uj>lkm)e`~o{j@}{fX@A?Vk$;2l@vZ$8KiB>y)LQIsa_wicucJKsdE}ku^C*A+ zuC6dOpOI_SX!#|kv9A?-$m`{ASL?s#cbdj);^l8*7n>M6A5NE<6Y_rVdtdc`Pkrm- zLCmqQOiZNRx~~4Utz05KjPg#tCHObQ@0*Mz_}uhu<26^*A#cC`dt`f!Jz%Y|+<04% z8?-pU|Ao{${_1$cT+*G6a4M6J-5ATZ;|gK{5@`aSSqV5%Io;=^J`k|$Me~(&{ez} z^YQ18N8sZT_;>_99)XWX;G-CUuFgRxYX2zu)>X|D?c4t^@m+22iQ50$w)g1$|1iBh zdgcF3-VZZMUFH678lMldEv@%l!4>{0|H|Kv+tL4Z?~Vt4&)f^xe_i_({(Y$Z*H*J$ z_p=*sKVK~OK~diE|NCTbbKlghugN;Y|G$>I_g1!b^E4pJ%k=MqF7uy|Sj#EbMSGd@ z*HRNi3>V0|;qf9py*OcacbAtQ zDi#)dqeFLl86uh9-BR}+>D4{nxX=$oUnX*|$O@4MMOJ%Rq18SYcn^6KLJ!I3ha~4= z>B+-hc4&=vnYYHfDzw(i5y|w{if^6R)_GGyk4jsQdbyzrVTCs%^tks`?{P0Lw85Jr zlId-b*h=wLdikLzg-?3(L%))~zAEyX$X<~@h`i%XjQX3mBFc;Uq)dfokxVZt>YE}* zL^8ejsP$fVkpz(*A}5O^iYSrZBBzLaLZq+Ar$mxO`iXp6enc|>Hb$U2d7kw--y6R8kcFY>s^k3=?zREj(y@}x+W z$VQQ;M1Cytw8$orpNKpoQZ2Gs7~ai|iHot;p|0UKiOX@`lKp zA`K$@Mcxwmy~x`l2SolL@;@StA_qnODDo$fcSH_}{8{8LB26NPMgA)CH<5Qmnnm6d z`MXGq$Ptl$i2PH;3$6E}L_#9bB4Lq;NQ_7~kyw#9k$92rA_*crL{1VpS)`{(qDU_h zC89-oi<~0z36VY`eMLSg@+pxdk$xhd7Ws_GsUrPFP7^s@Bw1vD$Y({)5IIw1pvdP$ zJ};6YGDzfXks%^q5E&|RuE;QvFNvHlk|r`-t$Soqbip&$aU8F#yP-KC~og#}wz9+I+&4L^g<2iaa6m zq)3&>MvNwuo#Md0ynFA~ho0L|zbiQDnQw4w0XU z>=gNh$S#pziR>16Rpd31JtDsr`He`u$X=1(iu_LGb&-7{Z-~4p(jc;5!#Dzl*ep91;14$UjBA zXjwlZA(3d27?Dp!UoF=_&n=1aJh|q1Zb?Mg7rnnQUi2Ztp2A^pBpd@X;Y2tYPJ=Vy zT%l=asZcKH)}z;>*Lh#MZjx`eEbuCBohf>A^jmA@2ot2v9q=w;xp&5s z%Y<=ZJIBx{8Z@ zo_SlQFbR7S_M|9lPsW~%JsJC$Q2rCYmb?_{&!2^dyz(2~6;2D^yY`51a(K*!=xEQI z8!laxB210C?(VM&)1uy7J6)Jg-E``vQ#XTpS;S`(pF?~O@j1lj5}!wWKJi7w7ZG1X zd@=DQuvGX|*pur4J1%9!ml0nR^*J7{5UW>hs{Ce^mh-)COfw*Lu zA2~6e+=JM8W@zS_(BFTJ0wX~d-ymrh(daT(Y%uxDV;B0rn_9O80_%ONf|RQL6jv7X#0cS+QO0&>-h{4%BPmqpK{Zl=_|RCFC}=Xp}Jo#)BaOQv2j^-_pSB`%G)G~&{TOD8UaxGdtb zh|3}_o46d}a*4|&E|<7G;_`_rBCd$IBI1g%7h^BRUP68;`DMhF5m!cB1@;Q;71*n= zS7EQhUQOK^>edohOI$5+b;Q*Z*FanYaSg;}b6hht=TAd(TwBU{N_2aCBfpXSM)I4m zH(_tW-a`A~u-(52VLOi!!gd}dgzY@iVdepG$;2fSmrPs=_7vx_B`zQ)GeZJF>%Gj6%$uNTq$v7#FY_O zMqCB<3hWiwtFTvLufkr9y&8Kp_8Qu&rM)`h>WHf&uAaCC;u?u-B(9OTCgNI%3r9F! zL^xhV?0(K+o*9~XW@zS_(4Suk-#ARU5z@C9U3wsv!EbQ6Xv$1Dm&!N3s+RGy@kGMSI@`)=Vu9&!D;);nYA+D6T zGUCdJD5h}iRIMZ}&zD*Fu zkY6eGD)OtyuOh!XV$bu{5qqAmj@a{db;O=0Ysjl1uZFx@`dv%EYw33#_B!l!*z4Ku z2DZDAxJKd{iEARRg}87G^Dl<^7sL4qdjj?Z>>9hquCXU!Pr{yrJsEp4_GIiSF?K$t z#@P9oMqCaaqJ=5tmI|4sp4}!$1#McpDL_ZD9@j+<& ziM<%R(6`r9r=B|X)M>!pfV}~GBmHTjKP~hp+>LqDjd|0JdDG2queo13_w#byf}Yfk z<4-q^Kjf#7pF(~r_EhYt*we75VNb)JPW=q(XHh?!_-x{{iO(TEm-sy5^NG(VKA-q9 z#?jD>uh1XIBI1jPFCxAedolK6>?O2YO1ovWTS0sU@fE~Z5noMw4e_!^W z>~+}dvDag-$KF8QM(Q>Z*F;!6>ylWmOR#I~8haA%Gjm0&NyUV^<8dnxu(>}9cbom5c2iu%>WR})`Nd=2rn#McpDPkcS`^~6^(Zw<}7 z75ekGf%pdE8;EbDZWDD|h-)FPg}87W>pqTkAIG}Ko`5|8yT-1uYwSsJ91r3+9uSv8 zTncfi#HA6JPFy;1>BMCamqlDQaoNOW6PFXmbGhgTpM2s1xt@x%&z*)vedqcgi@qs* z@!ea5Tfks()bvb|bIsCSN_^kg@{Fmi^Ug{4K=ES`@ z?LuK*oV^duiCefNOZ5CWdq12XXYYqsbA3@1cR|HH;$I!Q;f5dh{Mnin!njDUbZ}scl zaKjzG{VQu%2#3k_jJdw5X56b8?`pQUIXdl*azB34+-je1-MZE1#`pCXeZ6MQZlURK zy|BML&yuoU4RveT-?i-TTK4zSs0Xi$9Vz!`Q8ka9BpewDU7&?^ah3k_yXNRo518#M z_j;{4P3+Cld+xE%Nxx8VhUopHUOs=2a93!>IAbpek9uH)=mp`Z^_jvw?7uOQ$EHjc zJyW*VJO>^VS$O?*qSwDa{;7}rz|R}?NTsj=d*l25%V+-D_g_`tB%}_C2AT!c3p@3yptI zXjb8P(KkuI%>3RH+O*E-TO&)p{dHk;^lekj@kO?GoylvC{z8GtGyC;hqOXX|Dzxox zT4%T@QjlxgE%E!mD3Vn+MdDJ}KPw`m%53~AR~j~lF1>TM_z#3OTxRpekF)j>>uweM zj!0ntwQnC8ZS`G|3vV_3+Y`EOk#tA+(jt?$C-T=T?)2>~ORYWY2gOE@)Gb-&+Z(Vy zJIjpIKAG>O!UK`ICms?WiX197-$JEBQ67>)QB(6aDX-;s<}jtdF>u3+9xGKQ1yl z|3~mC;hxAJmTVRth&=X0jW99h7qeaxCIofm_+-w1b@BGRS08WBdo>*Q8yLU(czfQe zBd>onR9JhDRc%$PUJRtpQl53M!F??W8FC&t`c@s!xdMBC%g#F&aljeaQf z5YOg(AG?2loz_!`mHBST)4ZvzG#jwr4YALR zzPQqSZ#gsivN?ujoOjCNbb&eFl(8Sn8NclA&#XxtE$gUz_X0B?%R{>0Q=+HDe|hcz zVGix&vR!%a_v@Y~=ZQc6eZQSAMT|#LcRN3dyZ>qZqY_u#{U<;AvCqG+-{y1OBEu5N zH{X91GoB^Hmk?jl-Nu)6xACRj?K&yxe(#d~lAq$)aV+UxI?v4eYQDE9p&w-uZ?>z1 z{>+T&anD&}WZiYYzS6AoF`;w(=l3n$>^iLIZpW#D@u-sinR!wk{mjy@N}h?IB%B-b zrCB+`YVqGJoEfup?H$4bnOAoTYp7pCo$9#m1(n7h?pOI^VKvv4we+(feEuUp6MHTF ztdj9C*PV6v>lvR0^ctC;W`EWZZ?4DAxJ1rJ@|^lCp*dd-6&A?%$>w^pk?m-rU-_|i zdz;waCi*!hCbH~4$qRQM^?(_laQEBi8n$%*b;UYkPq6boA;HdjonXf&DZ!3sQi7dF zlS8>123#uN!-ksHd|p@{{pm%i!b;X%W%T-j^L_oI+syc;(w}6hXVytlg53{E33fZp z_GC(Y3hk9gN8e}mM|GS%4z3Q_>*k4(&-&-dRN~U8mku*vRd;(ml$BuT&o1fLunaj4 zMc3atQn)Abwtt-36Dhd-$D%KavERd|aJ);2xBc1^>2c39;xG3?{`Y3h(a-wlhjO`p z+u_@L`~7K-{?3$_Mc>Nx?^2GFTcf@>oHc=d4gS+o4h__ zKOy><(79_*6Bfw#!vlqjqOSMPGde2k%Cmjle!sORGHCrpqL;_m>+0NubJt!edS1eH zcV8#WPq2CU3HH8lPvqOP7K(ib$FsUP8(&0xG4aL3SH|>sZYmYc)KI&g33*z z&y?fT7Qasa_1lGWMgN7bPnz|raH)*XZ-uL4&c3g~x8G*36C;C{929+Pl>L5lDJ)@L zY>nx^KI$^@$4r_PD=bN{d8G*#RGRbdF4;e4h<#6F>Ds|U9Tk1&7kwUFYy6t`N|G3- zGU}F5r-C|3 zlTMv<>eN%GfjW)U$)Qdobt7r-(X5)G4A) z8Sx1{?C~U_hut5#hut4#V$xEmG4BF44{RZk~(S923H&Ca6It|omBtDz=vuQtv_8ZA-B(IUY zCh~I0%Ox+5ye9IR$ZI06g}i+7^2sYAuZ6r8@><9%W_wH6-cq(#hwSm9lZDL7g*qwJsisa1b!w@TPMuon6j3LgI_cDrx7Gdk z!!n4kV?62@k9x)puBcN%oeJtyP$%gm*40U@ ztCQ@yuAyGaNp@X_PhwqBr-nK;)JdgI8gS*fJQ>UIf_0-9rP8M~tsnbB6 zZ0hWZ`DMmqljJ!KbsDJCK%GY76Xp5P`QMcDB;%6Hc;qlXjpR3y-$;HQ{m7>uMf9VI zx<&8zX)l@f(ugl1E{(V};?js~puI-gYofg@@|$R{j5=A=$)Zjcby}zs zKH09Lgp=($%B4=i$#xx8Q74x=xzx#}jy~D0$0X_`Q>TbJ$<(Q#P7!sAs8d9pV&YRy zw#S2%lkGf9J=q>tipeV`ub8|v+E1tb4B9WFUIy)_o@|c?Wz;F7P8oG7h|i+^EZWbe z{R;9b$g3c)io6{1a>&aiuZp}X@~X(oqu=@TyNG_*Qm=@9XVdRm>eN!FmO91MDWOg& zbsDHsN}XKlG*G93It|omB)*L8C}TS+*p5c>8p&%UuZg@W@~X(ICa;OSCi0rdtD)bu z^t+CJCxq=fucO};^gAJJ*LOnLuJ44fUElT8X`oIcb&{#mNS$ixBvU7uI?2>YA-;+2 zXkt5B*p3wPQpigoFO|G-PdjhJJ?*?r=xOI|DtW2orIM$6vTl0X^_Se!uD=ZGCHJ)J zuZ4bRP$z>r89~3PlS-X5>f}%-jXDWE?flQ7P7ZZ)sFO>4I@^)Xc4V*}x#Z=NmrGtA zd0FITk(W(g9(j4><&l>|zjNt#9{nz+ULO6x0LOzqfQ-l>Znssod)VOQm2tRjnt{2P9t?1snbZEChD|M zC!A>KaX4bvaX69tEb4?KoTnq4rz4!FiBCx6dN7ge!9=@`639y+FM+(IM6L%DxgMl_ zO}!M_*W_#RHTkKumr8qSw3klZ4C-c4H-)-cLES{Vu2QITsm>-#HACL zL0mTd$)-O!^e2P74DvF_%OWqAyj=3~$jc%xi@YrIvdPOQFQ2?3^0LXxCNG=3V#cL} zaVce7@~BtJxa6?CdDO|HP9Am2s8d0mD(Vzdr;0jx)G4M;F?EWmQ%#*3>eN!Fj5@W{ zDWXmpb;_tyMx9#X>llwZ#-pC`s3otKyjt?=$ZH_4fxJfY>d31jua3MX`rSgm!@caf zX{27bmt8mY^t+KdjnrwRPC_p`|8*}r|C6W_jXbPar>m{Ip(n-KO=j>o&cYUALP24E!1Rv)=dH{%GoH>LrnvOTbJ)zrzOP7!sAs8d9pV&ZEU zw;IN+mT@a4ub8~zU^~dGBd?CUdh$xhDZDL7g*vIk=dc|)Y)3BJkxE`Fd8y>3k(Wna9(noXrID9LUK)8t^t+gTm(cHQ>Xp#% zT>70&oowo4Q>Tf}==k2-nO$)ip^bsDJCNS$KpG*YLSI>po}rcQA%KEyXMu1$<<3*%ZsUI}?6 za?#;UC&ARDr*G(yTrR0^8r+eG^pVZsV|K#3w{#R2kxwoDFE%dvZI@Q#vrcMfV zQmKG*BmtIt}DEkl#RlHrt=g_UEwuE#&9W zehc|6J(8YojU2%NvBRN zb?T^7Pn~S))KjN~I@#38rcQQHhxn~gr_Y;EW8Qa1hwSN*lS?byMqc5NNPtgm)4=?Jo&6B^mHNbnz=Ri0F4u!+ua5xH%fn#AN zoCqiRjP;&|)!zR|JF(st?;XFr{lp!>{|@>g^d>*PmvmLchIBxe*Q_`obXwG{9Nq$;o-hMkN5((04{=y;WoGf z?u5JGZny{T^%?8E3tPf=9FL%T5xah(BBuYbUN~acLB!X4dA(s@I1~ndVcDE6K07l|WKV!XEpS`?9*bnxHLt!SI4wu3;K4ZLfaZmc~Z1VM3xstN$a+|N8 z~(Sf^!457uc7Zjua67AXpUb8e7%=<5H`ajFe;w; z1$+3E{Sx29&+m=BFYFHoz(H^b91cgqF>ov#4=2JYa2lKmXT!O09xQ;1;ZnE~u7;Ix zBistN!Ci1S+z$`H!>}1fb+_XbfpIVq_J;l805}8=g`?mYm5a5gM} z3*a)i0F;N6Wk29!5wfX z+zt1@eQ-ZK1P{X_FzO`66ZU|8VLvz!4uV7AP&f>ZgrneCmtQ9_47b9)a3757 zNq^x0I1mnn!{8V=7EXeb;WRiM&W3a00=Nh+gDc=_xCX9=m2e~61h>L%a2MPS_riVf zAdE`1+ua-Xg#+OrI1CPlqu>}g7EXcF;B+_>&W3Yg0bBr=!ewwJTn)?Ndbkm8f?MG> zxDQ5p+3oBP2f<-*IGhM)!?~~kE`p2UYPcEhg8N}J?4fM?8{sCn6>ft&;V!rb?u7^8 zA$SBvXT3@hPIcmN)OiJ!3T4}inq7&sP=hZEr>I2lfX)8I@v8_tCVZ~fV zNw)tHm{qO)h2oJ%-uo)hKQK#AMkH9$C117>Ta4eh%C&9^Z5nK#cz?E<{Tm#GDdRPfJ z!cA~9+zR)?eQ-ZK43EI5)7d^42m8VPa1a~xCkzWE8%Lm z2A0G1uo7;Bo8W$U2p)#b@CZyC!1{%KVL#X(4uiwtNH_|Pfm7f#I33P}v*A*>46cT2 zU?toLH^I$t7u*jIz=QA*jC|H^UmWZK6Jc*S2o8b6;Yc_Nj)7xgCY%mu!?|z)Tm%=x zrEm=_hwI^HxD{@Ldtfs>0^`oG+t~vq!oIK{90@bwWH<%Rg^S@*xDu|0m2e~63b(;s za5vl!55U8)8AhFH`yYXEus7@r2f{&cC>#dI!b8t4L8Caa1Y!I55R-)5Nw7=VBF`KH?S}4 z2M56+a5x+Z$HGiF8BT#S;cPe$7Qh8?DO?8Ez;aj#H^QB87u*B)!UOOiY=%c*B*kub z98840;aHdnC&9^ZI-Cg$-~zZ5E`zJ#8n_MafcxPA7#T$WU~kwL_J;%DAUFgLgTvuS zI1x^Qli?IN4Nix%;ape%7r@1EDO?Fx!%DajZiU<6PPhy1h6mvxco;UrBQWYL#tHU- zePKU101kvh;7~Xmj)Y_2SU4Tdgmd9MxBxDKi{VnZ46cN$VL4n6H^NPDGu#Td!5wfH z+zt1@eQ-ZK2oJ%-@Cb}Lo8tgXgneN@H~i^Z26w<+a5p>*o8b`{HQ0_@1onpm;7B+MPJz?l0=Nh+ zgDc<~SPnPA&2R_Y3HQLguo)hK{f5~7_J@Pu5I7Q!f@5JOoCGJs>2M~T3+KTFa1mS# zm%Z z2kwRY;Q@FE9)?F?)VXXg>;VVDv2Yrk4GZ7`xEgMTTj3743+{#oVB|d8eqT5Uj)ddk zes};Lf`{P|7&Xk+i@-S81NMe};ZQgRPJ&b5bT|_(fXmz`2U!D z4=6dRD_Z+hbz?k$3?iB!sHR02g8&hXNv4{X3_}(mWNZtn83`B>Mb1>y5-?;eL~24c zEde7CNDN6}pxPtCkW3QMKn+70le01D-}lt5%`*S<^Ly*@)_P0p-1E)er|zw~6}o1s zM$@wS0h=GU`6-*ebHV0OHjlP>tj*(X-pA&NHcz&>%jRQj zKEdXy&C_i@&*qD4zRKo?&2w#@Z}aUoFR=Mun;)>b-{z-mUS#ttHV@eRzRh3R{H@Ky zw@T+{l+7iZ$J;#B=JRZxY4cS!H*CJ$=6;)BvH5+QKeqW>o1LxGaocPjX7g~HSFm|y zn+rCtWplgDqix>I=51^)**xCnsWwly`8=Cv+I+dqvu&Pl^X)eG+x&{nr)-n1f7Ryc zHh0^6p3OZr&$YSV=ErS*-{y~P9`@U`-{Cfou(@FKD4R#yT(Wtr&EsqyZ*#@w$u?JQ zo^JDOn|o}&-R1>0_uKrq&5LY)(dN%>{?_Kjwzd1!=CL+cZGOOJ$4~1<*t~_!6Ky`h z=9xA>W%CN9bh*(skGHwY=2L90+I*hP7ukHd%~#nx+vXmd=h{5q<^?w2Yx9dXe{OTz zc6K{#Znt?Gn_sl~6`O}_e&6P=Z2s0}r=0dT+~$>S9$|CA=Cy3z!se3AyVyL==8DZ- zHXmy9RGX_dPq(?-=JRa6$mW?gUvBeNHa}oc&CXc6{WiDRJi_LJ&1>1*Zu2OcJ8T|rbH(P#Hh0;4 zsLfTIr`z0Z^LaL3Wb;g$=i7X{%?oV4*XEYZ57<0l^P4sg+5EoE&hPB@+T3RIFq?Xa3&cCb>3>w^CfUXIdr2|zWa z3bl}0m0CotK`o}%qBcNsoNSC7DBbb`wGzqvRo&FBP^*#}q!wv_WxBNKLveY6Bz(zeksjRv;BY_vrkUsFkS&)GDM-&@=MP=Z=Kbs-zky-HwP_ zgA|imq=Ym;8U&?dNIqL#gOFO4RHHi$l=c$Q zZIEJ8i?k4wE|E|hAPs`-RxZY^BzdF)X(TA^&!<)*l|gBL0ksNg5-43Zq*f(Gq$Vhx z-I!Vn^s;RJnIj89X)gn+Z4Ye_lrG`?%+&oJS^;#F&iF`BxUOWS_rDkt}9~gK`+a(n1gP0Z-N`Cdk@@(y63=cg3?**(Yi-a7i-<> zD`AVY?i$qfgC3QCz)jRW9qxd-x4|6*rM(Pk-9J%>Uv|m%2k2#a1a)noME3GBI@60!w?wy0tpk+q!2nd3arooohSL5jptQd(tuuQyq+6w1qt>l; zW?x32y4;NZ45j@wKxuzHTGxi{i0QWI_EGECy0uZ4faY6hp0@dX( zY)6A`6O{JSqjfqjTK5?0TCD3=*UWALN|zW??MsX+OPHQFSS6*@ZG)EXUk{XO?W&o5 z>FW|_UyLXjM>p-RM@$oRsTCh8n7wGrmVPbG)=v zGiP_dYUU^z0Hw1wq?%b%XIQ4?Khd~{hz8wQ zwVhVQno>(Z>1YGg20`!YX9a%k553%lB@Cr?4#=L3ptR1TTcGQM>ayx;I40?q=mw+; zsS}j;7gDQ|B2t4ClUk&NG(eK2vvqbz9;ra`NhMN1s*plbl@yU0q?ptq^?}lTo=_Vg z4T92n7X0~_be0;xo*kUBx>wpFP$ zNKLveY6B!^*=)2NDD9;{twgGjs-y-fCbdWjX@G=pr*Q0^j$_vWrF+3s%^86^6l%U| z$3iPn3sid#T7}vq&zv$eQG6YV?b$t0jMtbVOc|Vi$E{SYqXxBn>Kz2Jo=@JEMMQT2%E-Myr9imoZ-55~1 zejT7*S?()r5$h_f>!jADb?c)p1l1)(&xY(AfYP<<);hgcrq*QLEKoXbkJjys{#vZ- zSIvBWB-92-gP?S@A+0+A%gTz`xDKfe)GKGg^{5p{BSGmJv}@fBsPpNTNM%quT8Gv> zjJkksh18|4S?7>il~ex4xS?7pugVbbQkJg#BkLk8ZeXQ%(y0=i5&>bKRshj&3 zW@shO5UCB+D{I2_s1-=<>Y6R`sg+0_>YDvqq1L6ES(hrcZq>{hMARCj9(A{c8&hkM z`qkCrfZ70QNZrY1+kVMyBej8g#f)2^)~=cvtwgOuwdv3TY86tKx=pwtwJNCwNrpF^+SN7t*QZt@ zb*MWT%Lddcq%L*OfE!Y)lDgHM4L73JAT>ehy!2?@!>Ehtwn+Wz4!|9tHl&*S4X$vj zWZT;Y>J_u!3e?(FTNiacwGydAUEQnHDx^-(yZU+5rFA=^mym9i)UECTa3g9BQjfaR z;I^pst7c|=fZ8A^9c@TmGvm&x*|z0CsoMtX6*J==D7{(~Sl6zunQ@sHOobAwusYO|rm)LNu|bi!CDzq(t&P3R7ghSZ$^ zS4MD)NNu3>`r=V5klNKf0?Yc;N~8{TyWs}ZDx@xTuZLTu)~(w8&>GZwR5PC>F|`({ zU){fBiGVlO=r*bKXq{Pum|BZ<{p!wyJ3wtnH8ZZWMz-Z`pkBEZnn$fb zYFF1>eSB&qQir;xzkphW)TOTJIiyx4b*pPWLnCSpQjfak=YKJ^7O7ud^Yg!i+5l+~ zl+Njp)|sCPikEG#Luv!{iusvffm*w2=I4JUY8{~TXBh#t3aLw7^HYtGT9wod>Xk*9 zgNRy#)CA?6eK7|;pk8?&burx*sb5_)R|&NN(vZ5#eDB~-UUMr+ZJ=J+0Io-^Kq`Wk zbPhz%hL+R+@6AwpAKMPYDSYO07ofR#(59pw=YysB5m6F|`({kJPVqdaq1vfHX)N(mHds zm0~s<4k<@!1NF*0!Mso_kcy;st$PV|C2D0-hq~s7s8H)9b*XFSzDlh|>Q?tVxJ_z3 zs+s-KN3CBqvwsJv4XI}KhchzU${eW;WS>Y-E0WsPHG8W>txW1rcU{Mo3bjsBm%8RY zr%J6x>Q>jxX@gpm)T6GMs}{9BQop)pt_G+Ll7`eZ^Wv<$3ote{sT7}d}>e4!MJcrb(q#CJP>&!ey)EcBFsYmNfe=)TdsgKmJbs@GR zp*BDoBn@eu*$!Ddn=6NuBej8g<#P1rQ7e#&q;{>l)65^W5~)n;(7IPp7f`E^I!Rqx zXYPGMYE@E=)U9>jqrZq+gVZGTXx#|cm6%$K)JN*qI`h+ygxUaUkTj%q=3d!ZC!4<< zsST9=biY8YNNQKt>`R|oiBu+aXr119P^*wSNnKiJu6iN0Dyc^5*19b)2NAU(@H7_6fBCtvdj9gVct!PG@Lc(@O|92TDJ6+d#cy*14eW9Jocg z?dqEQXP;V$R3>$3o!O#*T7}d}>e4#%U0X=4N~)2%wa$Eh6j5uCnxr1B+XLgasP&Qh z)jbSuLT!LFNE*^QGn3Mu&5J|Ik=j7^I}uP_J}6+;=oU%sTBoz7b*Hb1t2f;;sYB~@ z*0gS=B0ibuc9OcZ&fFJ=T6YQRs&s3lZmm1V99LSm;z)cKL$^ul(Yjfvi?!|+)V1jL zk@~eRHuDEc?{Wv|4w8nn?q$@;ugtt`wiad*lrG_b(qk=0Y6JC(xr_8zSD;%YwQHTZ z_x3?`=|j(k(wo}(TO_q>-5Piq$p_Wt1@vqv?YYFdGN}X9E5E@K6>6QNE_L^W8&a#1 zYNT$hI}~*hwFaq4>d`vACW7iRVO<=tbo)sCT4%1*iPn9Hx&gX_q#><48{^9QroRi? z@%aI=^G9j}*{9)Jx8bjF#?vj5+O^JHhkUJDh`JKpGO0uBW?|ew>;AMJ&Um_=q%N(y z&&;3JeTlj%-5RM|>&(1FT6fv{IOFLyNj+L;u7t7HZ8!?^N4JmEuXSeq60N%pbpvz< zNkdwvcP*pL{B5@Z<_~1&kJJXTPX@H^Nz@hS7D??|XYMk5t=nTm%pct{sYC0`cesJp zJ&(Ey-A+=M)|u~cL#^9yBg`M&8YxoueYg#3O;W6GI2vsp*}%-p zLbwjd&I`#?cehP28`O#^{$ph8J|1~}XSXZE1B>8kp)XJm)RF{{~ zi=lK~Ds($ZA>Asq8Yu$RrE7D{3+ozmo1~a-i&`Hk0oCPe^kT@)3*AAIY?QeU$j%GN z1J&ii-(X%?SD;%Y`E*Ov%A^2Pm-V*5ys)l9x04jotx~IzB2Zoaf?f=zThyT2B*k=F z)cQyXs4iP>iFsk&0Np{7jLybzKz3e89;hyVMK6ZZbt%v-l6<-)YGqOYs>_aBVP05Q zq1#Cc=~k)LND-(m51?FlVqRERpj#yQbW7CAqySWxi_wdrbc-rADQi9V9uMayCc>Qjt_5l}Qy+C#g!R zks72XsYU7|4Uh&&&SqRcQh`(?l}Ke$h15x^l4_&|sYz;)`bYz$L6Y-pt{r83`*(X2LillaR&HH*KYGqP~y5>9Z3bjsBm%8Tr=_<7vsasw1 z##@tGk80-Kygq9Es+srj2B{6Dbr{zvaf?W8pk6WK7N`|T?dqCwOVrAw4t34XsVmev zNnPripBz`I)kxjyn%QVjYm$1@H9t3NQR^f1t82y`pf*SvQrGY6v`oHDnU)CTGm^9EgkT9MSQu6cv5M6FEfP}jUcSE1HP>QYztFSQz}TV3-$SA$xU z)T6F>&e@{YN9tGCyw5d2ZICpiu6du!8N=-*wSjuYyw6pn)~=e_Gi7QWs+o7>I;nN3 zX7*8)T8-4Lu6ZA>L9I#ZQP;c=*P_-(>Q~pi4>v$J>AS1!_f7 zySip3OVrAw4t32;R;YE7y3{o@S*2DZb*pP;vPrE+HS?6Gk6OQK=ByZ`Hl&*QiF)pL z*%q~ddd0j^R-jfSwX17>3#UY_OzKeATn{SLI!RsXnl-3WtC70Z)hi9PCaFhV^YiBx zwLVh6y5>E%gxUaUkTj%qW({QfYL^m&xl-HW;s z-7={|>&)970my!@OShBMrFG`5jSy6q&9_S_U82gm8mU{C7|h}4{Ghb1LAOcj(K_?_ z5rgV-J$g2jF41CLAE_VIE9ULH0cwM!A$9fbyB#=_q#UUYWZ%Q1RwT8nI~se{2jO>( z%9uY;`b4(Ox(=<=_wcmtI@DF@c9OcZ&KxD7){P#6V~uW&)U9=GdCZ#DEkIp^Zj;ob zbsL~A*1A2$;`pQ6N9xzQJyDlv-CL*|pgTw!(mMU=euvrKBYuZ#3CRA0h13S>6|)_l z*2(rb{^%A-?OJEfH(%>6L|ut)nbe_mCt&>otsAie=8tYCsY~n3Q-DzG?m=CZZjIEf zb>=BRq;-3BVE*VfNj+L;)-MLxV~uVfsbA~NQ_BQ|-+DuThSDVlST{%-0;TW6$&Oi_ z1F|zoY6GS3zIh=0j?RvlQ&8G-fptYvJE&L8`#C=AN_5Ml4y`k9w*?^l{x5nql=fU< zT_>pv)GOvaw~%#Jx;0X_)|sOu0@Y>8PAR25H(1vs_2?4jc!@!2U5joXsbA~N{zyP| z`4&AJN|zX5-5_ZQl)fJ(J7ska$j&pV4V2EB2dc|CJ7b&!bv38*e>?uvN^*?DH&AZZBHE9UJY**U9oKz5!y4--C z4cU2SU6IrdO22dPSy!T4CUt0?dCw>S;rY>Sm}iikXV!I+xY}&NZndz zzE_Jtb$JFo8?y7vx+bXyl)euVQ)`j>Nc~!8&Xk1O0BMjkq;+Ob%P!fRI;0$_4P>vo z)C!~`sa@;d!WQ||%A^i;_3aaCoun>x%{qtFYNT#;^_ZmAB=x9k?q6bREm9w;U+c{J zCDaBgsVoZICpiuI~Navh8(9IZ_+QzJ)}sKq`{jwXTj&Q=eLi zR3>$3-CgEWms*9?N$S!%(_cufM(S2~5!{GcgVZGTXq|aSsYR`i)UU32GiiX@AZbWl z^FETZdp1KkQX8mO%v(qWYDH4Jy5_UHM6FEfP}jU?RH4>M>QdLdQ&go^BXz55-Xv;L z>ru_TE7YRaN9tGCd_OZlZICpiu6Y~C8ON<8wSm%~85OCut7hKvDO2lE&AibQQ0pXh zscYWe38~dc-RhdRcOp<-{DoV=nkoC?f_&D z)3dV&zNZ7FpC4_YUNLXwcYB4QQ1>agopig@HSe{A z>K?ooes`E|x4PzSn@HWy;Wp{^sB6ZJ)jeZ8wwG?dy84cxx`n;5y>y4vHRH;jW_xde zn*-VH1=+WY)EzSc+e^1yUGvj2AC!IymFaeDEZyTBmo-Al&``9-o7twC5)4VrqTV`az${hqwwD`dTJ0hIy&|tTD{Edk+o$p46~q&rAg#%F7g1KF(v)#X7f;n6M9^{JJq1)#cg{0Un` zx07y2twt>Z)#X_%VaV=5x-qprY6%E$!c4?=&>f^JduP4mKz2Job@>=ecyx<&eQITD z0SLd(zAv_eZYSLuDIzsVF{zJ~faOKs&Ot*t>pza?kxT??%ReK9sjasDIiTmRULM>Kp%}!i5s3ofX71|&*`Mp`^{U%|Z zL3W*0`xaV}ny=dVld-1M0@c<&0P9CB1f~1DMlI61hf!z99uah7YJJoaP+fk1AdU#S zgLGw|td|_ft~01E36}8a7U}xb%G3f-T_zobBZ6)x-H=+1S_G=gM_9s;-441jwLWSI zs4mBJVLRv!(v?4Cz2rc4J3w{GO~H21Ezj6u5c$4twC>~?_gKS&*d?Vwwv>r*RJ3qW=G3QHKW+d(&^ zR-+by@cs0m*bcf)x_zXCG)R&^Wow!vd7!$ia~O_$YQAc7p_Qoxs*OGz$33-BwRzBL z)FRb3I0EM-wHTCcTOYMV>uyDzAv?QtWn!k~Kz4RPbs0SsvrD%~*QZvd7J%?SonZ+> zc6RB8)N0fs5N6{@%r4y~-I!V*wFFd`Yp{eNyB&0M`*Q6`MUqb{lLAm(RyzvwOf6LH zCTKNkk!o8Xjd`XPtF{nYAGJia9ge~EkDBaf#&{B14rFInwaT$L4ygI6y$!8QEl};4 z!X%{>T(g5Fl4ubu2eED2eR7%!ahF< z+d;QT*QZvd7JzWyge45w?VuY{t5J(Ubt#^V?V#JF86bs>4ABFQHO zq>vPmVp2kq$=Mhl$tMM*kQ9-E1G8mAQUt=&ARHyJ(&ne&C{}8LWcqaN&TKX*Xr*tJKR2tol{y^#36RUOyG()MDkmO*~ zvwt?m0Hv-+^40BwYbbRCQmF23=U`lF5h+&pVYr6uxFk8mjJxx>7#C#6CHd+;4A+ny zmlUeI%Xt`=T11M~?T2f~j!Tk5&A8j0k8weET#~QuV{i@GaY>=NJ70itsYRq%-RIyM zvg4BEFf;Dn7h+tH9hc;*`wUz|c3e`Z?!=2QF13ghtNS5bLv~z}9B#&)`e%#_vg49` zb-#gY$c{@2)jf3v#-$dKVs-NuV_a$pNsch%&VXykj!W{@U3n(Pr52Dvb#H)cC|x!N zrJpGYNv4`H*1iO1h0+ZmUuly|aaJhZ1qzimy$olC(#@b4l=hscHtKSmZ`9<-%=JKc z`T*BZx`a;()Ls7yj7BXaMe5FhYshW~DN)y}V_a(3L|f;9@Oci`P`YdgO6MRV#iWGf zADz_&q>vPm?2A<6MvmK2dvPmVp90$te1!slM+%e zBdZHZ5h*4mB)K?S!Xx>lfE1DvlFa0?B%c(JLQ+JENeM|VVSgl_6p%tvM2blXNiJo7 zB%c(JLQ+JENeM|V%lZpR5h*4mB)L3W!Xx>lfE1DR-BE_VHB(vEcDI&$B zge2ExO9Z5l6p><*cYU^mPYOsODI&$Bgd{g)y#%C?6oKq_UZjNN_i$NKNQy`?DIv+6 zY*~*Kk|I(}N=R}emnHe6fE1D<5LXw-=A1Ne7 zB)NrkB%c(JVp2lFf7+MbE0cUuKnh6_N#=7|l1~aqAt@rstz4GmlLAsmib!~YAX{gW zPYOseDIv*i<~#pkSK>Q=rK3T<(%(S=$o@1ywH>a)&o`(=q*&b^xQ6U^sU*4GjIrd^ zju=W^A7nq7NTJqEMO~!ycTlXf+co&Ph0ghr2$Z+ zw8ypRPw7!m0!r6K?lk>v(L~RnRP#u_x>v(Bl)3>aRCmc)7>!y)iq${_mXKtD8TSOZhU~Z`U)?w08cN-O z6skMndW=gg0;T&hCM6`fJ99mfPYOsODI&$BgoHojk{#_NpA?WnQbdYL2}%Bv^%vfo zQACPCb-5qgn<%Y&17__$qn!`(ls*OdN)vl<{3$&G3PE3P}+uCM6_!G3zgQ zDWi}Skz!Ip!mrz8$0^At1*DJ^kz!IplE1S*l1~aqAt@roB>&Z{mw*(4>T)KIgGg!l zxwvj9T?R^&et9#F``1j}B_K~}satT|D}|syscjyPd!@5Lky3s>`ct|HlqjumEBZ@J ze=|Xz(l2|_U#fuurIl_&e@fSYBBjFZ=ns@0&xvZ+Lo;O0o`H-!P+dmdfibB0q(I#{ za1Eu)hNMW{k#}NTYB4EM_e!{i?6|LI>*>Opcy5GPxl)5n~ zQTLby7?+w1W_2E@F7LuMlrHO&0(Ga}jd7`kq)6Ql;2N^yk`i?fx(DM@lQ*(D4^)>o z;2N^yk^*)A_!o>zEhI(iJ_py39ha1-yZ5~qmzunp)p?-0JO$TKx@-VSKaWCEq;z%^vY1*QAkCk3RC6p><5Lc$;1$gbHWpA?WnQbdYL2}#~#eQ!miakRuAcg8a3)hg{Go)DE zZ6CvE)Dn_>WJbFlt|7Z;NWQwuJdSaxg`jl5MWk5kPC;Fw^be4HY^@*P^h%)GuXdM3qY~bI?rNWl&%KJXQsa;7ok6; z(?Gt`SD*ltu4$;+l;_YhwTKj}`yyOJc3w#Gxf!G5d5i|K^Fs2~T>#gRoflH5Zs7%t zOD!VB>Yf4DkR6vKUzl+}fNRK(OY+s-??sGDEg*&JJ_y%Px@<&>)!pydnQr^7Xrx&bLv_n&YLrEWxu)t!=HTxtnP z{$<8}9j+leF34VsNdYM&MWmRNknrmmwil1&lLAsmibydjA;~xFkK~gAQb>wOF)1O* zx9pGPlLAsmibyfZ|32#_AcY`YhX!z5DfNS5rHx+4ai!D%i8!cRVi3ob(n%m+>2*+` z^!qokSCt+FMM_)0iT;$X2PH})-a>zl>F->Sr<8je{V5#_3Y0zug&=#Bs5bE(^h_-# zCF(u|*HF5IxEXn%x~x0oh@sT=NrAdE;2KKZkQAx=1zba^8G$4>zog9l>E%} zHwEM=y$te|w*LsdDBTDOm4wO$z-5<5 zLXr{ekK~gAQb>wOF)1O*>g{e`566q9@}s|!dWDI!TBtMf=9 zDI&$Bgd}TnS&~l*NHHlPNs-Hvd{RIPNf9X~B_tWi{zw5SBqbzSi%XDvQa}nx2}#z@ zmJLWDDI&$Bge2>5SyD)fNHHlP$-3FH9?2&Kq>vPmVv^sU^%9U`QbLknWpy4YBE_VH zBn|XMq=*!g5|V6`E$fkdQbdYL2}wqCS&~l*NFgaA#UyXztQVgYkU~;Kib)AcHpzPN zNIoed#iWEJn{ru_PYOsODI&$Bge03~{e`566q6E?`5PAYXBniB6p>`}tj;5aq=*!g z5|aFe%aS5eO!BwL>H<0VyOUBq?P} zcqE?`kU~;Kib>vfSuZ{*Acdre6qCF%mn8+HkQ9+(k~fCSk^)jlib)B{8*9Fo?E4ho z^@7r~%ur3=?~Fm|_m^P@T~b1l9Wyrs+3#kl#iWEJJ7r4*q>wab7stM5IgPZCB)ewI zdZdw{8M@9swSY8wa=buqPsB)ez*d8B|8k|I(} zN=Py;>m}MFoAH?BO~_oI6p+FnXg}_05`J)I_r6bxNq!}B6H>5$rbVQL6n18=Ov=b7 zg`}7ylUYX!Nij(dU>zwW#Uwe9b)=9KljI=QkwQ{Tk}lSfLQ+hUDXb%fq?jZJvyK#! zVv-!fI#NiANpdLbNFgaE$ziM`g`}7yhqI0pl46n^!8%e%ib*n+b)=9KljKO&kwQ{T zlA~Bh3P~|Zj%FPxB*i2-hIOQn6qDpw){#O|Op@bRM+!+X$^5Sg>2=p9g`}7yC$Nqb zl46pa$U0I;ib--3>qsFfCdtXHBZZ`xB&V>B6p~_+oXR>zwW#UweCb)=9K zljJPckwQ{Tl5WwPas}&1At@$Fopq#;6qDpi){#O| zOp>cuM+!+XNv>ucDI~=txrTM5kQ9^f&^4PEQb>wP(qJ7aB*i4TmUX0%6qBUMI#NiA zNivIdq>vPoWH#$aAt@%wb*v+Wq?jbvvyK#!Vv^jzI#NjTdNMa6d2^_dyc?;J5|VdQ z<_4sQl#sl+tRqFFgyh}KI#NVRNZu{1BSoZyM)Gc_ zM)K~UM)K~YM)K~WM)DS9T0n|O3CX*gb)<-tki2_XM~X-Z$@@!I7m>Vssgb<BYA(#w15gPq2;@krI;kH`b9NlJ{ihMkMbkY9#MzY9#NO zObbX6DIs~!vW^sy5|X!wb)<-tki6$uM~X-Z$$Or4q==M|ycbwUibx5`dy#ddh?J1L zmsm%NND0Y%nRTRyl#sl?vyK#z5|Z}{>qrqPA$hN6b@Ez9;ak~HvLaGUN=R?Klby*U zhccQ(T1d+OgDz;zYzV2w6;IHN;_v8Hm}4dlBy-az7LK6=D~}RK%5t z`w{;@EVj7F`iR{SQxMY;HzEFpcnh)I&qX#w?1MNJ@hajo#IQDzH4&R4_CcJ1xEgUc z;yJ`8h-H=#8HJdDI2myv;s!*FcmeS_V#OszwnFTQI1q6zVm{(k#3zWKFD2q3euLN< zF$r-p;xfcdh=qt35Fa6y8YZ$X;@60Ah%UtGhzM~n;weOe_ztn^FGRLL?2QN!vk|u; z9z?u^_yF-OV))V`YazBl?2HHyha+l;I-(bmAihDYy^P3Ch)%>=hzM~P;!T7zTx0}d zGsG^4$%rcAD#QZB^N7z7KVKI65%D|3!H627j<^NUhjjx)MTjB9w}{~@V4e}1BKAep5OqW^;!(sP;%kJr zB5DvjBPJm(Ld-=xfOrw{F=E(CBJGH=hzjB~#FdB}5%(jWL41o?^Oqu9B6dYgL`+3= zBN~VWh^G)=AbznjjuFJ3h{F-*A?6_NL%f3+wu(pru?1o`#L#1zDth)WQ25ceVej`#{uTuo#L#011Kh-(pdARa-yh4==s%n0mD#4d=*h?5W( zAg)K;k9Z#OF5-K{a;uB1hbSW^APz^IiD)A3M+_l;u?CJ0#QKOah`kY$5j8}FxDD|z z;w8io;#XCtmg%tbtkcn9&bwXr`CyC9B4R1q@~y@&+y4Wh6P_B~=e zVk)8!@ebl&h-KGB|A<2nCnC;AM2Nc(k03rkEY~iw4q{ux1jNCJ8lsN41@RE#HN>Zg zC4Yr$5n?aI5r}gUHy{=wob|BXh%tyg5f#KSh#KNjM1;5naWCR2#A}F85#Jz|Twi2m z#3;m8h}{ssM;wSa2GNap6_FbyvI1fhVq3%nL>Hopn1Q$vaW7&K;$MhmH^8+YF#&ND z;sV6=i2D)GBR)key&;ZI#6gJZh#83M5w|1y5vy;6eTf*4I23Uj;!?zH!~(=ah?fyV zh;I=~kH&l=wm^(SbRw#V>kxM%o<@9+SaoA;BjOmusfhCsb;K=*{3f`DAhts6i8vl{ zA>v-dBE-jtr8mX-g76Vj5EmethXsdR}o(zme>mW z2Jvgej)?scry|Zn%tqXaco6Xh!r2H>CFFHPncpdQ(V)5-oHbxwT zxDIhA;yJ`Sh;I;u9dNxtOh7z|_!@D32YkftJEC92Ifz>j=5Lw>JE1ScVTijCFC$jj zS)>E8&93+w(YqVA39-fQB3B?rkHfWb51i+SaeLyLi#U8Qd}fXpX(5i>Tg07!&kDq| zi2Z*rveG`-X2iCCz}dkp+zu|JN(XW#MI_b1@oI1&9JPCp5seJA6%M+_n^J_Xxu`g}_ zBX;e2eIhgYsF|RkF4&l$mFH<3=-;C?-Ex5iR+UAMejF>!M_p19kJNmxaUP|dJpyq;`+Z}+waA8+=qJ>#C!MS zniFGvTUd9*J%7c%=)*CMSaTuf2=O+;75p#m`1dmzCX35T(k8!@rDSDUT1LunSxc6c zjbwQlEi1~#aDM}LOSr$4Rm7JOvYo6h9a4~;Wlh;#in2GB`n{|ze~@+MPtq=(vYs3u z>*L_tK)Pg8nIc=rv9h(Cfga984`)e9E|#*)l(BM&Y%iChx65QlxdA=)$gVO+c9WaX z^UX3&=F1*(tL!Ov$X;@njF$x%?OxeO?!#y;`J?n>#3yBbN60Uosj{YX6kbR@ zT1Gj?%7)HyvWas%UhXY_aIM6LqoU`%Z{aid$KOYawFTg|E8F&CY6A%3^!GosD@$lek{2;m^ z^POwu9;Yb}IJ4zJ=X!a_xj~+G=EyV7P4cXBvn+Dv$#c$pdDH2Yx12lWZRai-au&#Y z&fW5rbB}!I;81Yy71zB_7IW{HpSiIt;kIN+_ph>)+b2uA56Cj^gR-3akgV!HECsh; zM!Ap3hVG*>+I>tmcAt=6yML2y+$Y6%pOTXMjEr%gl^xwhvXlFq?BYHzWKjeJ( zUAe%0PcCxbmznMda+&*~)ZLHdD)$q)+Wkx#?iX^c`=!is|0T2CucgQRMs9S!mAUTs zGS79K`L65qx_Rd|cQNO7cX8)V_vg-CZkw~fT`l*Li#w7%-d@JR$vf=8_cVWU^2eH= zy7UXpi(i)J?=JgVzh1c}!%h9OU1=V7b6&sxdfZZ)Pr7z_&0o!0S@Tcb-;_D4Yrk3k zKkdI7743SjYu9^}?SEs<|F`>}GAAA9v^~=K+-LVRFLqd(-#j$UI~GW zG(WLxnvc1DFZHwjvgNb>HmgtkH~)Widw;yXKmPja8xPQa_qy?r|6%_>UJw81BebqI z<3!E>d3(Zt>o4nP%AB)R&+>mePO|O%Z|BbzvoF+syBe2h-m-C}=AWwnYILpkx8Lj= zG@skNS@U~;zD@JP*WRtUerc@vxadL6*>+Bu^O%19Q?1W`+TLuOAM*d5`Tjqjk956e zo}3>4yIq|g-`V*&=CY@CzOwV-vLn*E;vs3?_p~%0T7BhzTDP-3pXbedN9!gW_3y`d zHr@|)A86gS+t2-j*4=bupn1Fb2WWop z&*}brw~;P)MfDKdU%H-`OiJ~q=cReuc}J?hfA8^{v;Dn_y`CR>LR$BMy-uxew?DhC zjGcO_E_dq1XKBv-73_W)JN07KoAz@do5vsP+3_%J{?%Ilzx(;HgZ;eto&CJe`a9~} zbp7|eF3o?+juTs#UFTP`pBvvDp4R>Tl5`%k<0JcAT6(K=9<$?f?9{YA8*kfrvvmEl z<2swyRcxJWKM%8UvwojDIPEvyMW z+-CLJd6u0w2ifb?!sGvazhwRVc=_yje99gdbM5){x;1#@-t@jSo9}Et?|s6*>)G}NH@&6nweh9z{oDNh;hH44+J4gYJMyxnf71T8n7xAb z*VS0{C+&B?*#+(I+~zu(AHH^!=J)=*iRSvHTWCHm+E(-b>+?Nj&RAW~DRXxEN!Rzs z^Plyfoi9J+aX;y}|GWF=hxJI$=O3;k>E}y!eZSgXpR(&g_W7LM-wglJ=XG|!;~q3Y zx9|Q_Dw>ZyDZSpTYwrsu&N@)_1y(nK{n>255@~xV)^~v^AHtrAip?7KBUuX1b{_p*#`!nl* zqYIzV<+AP1KF_lIN&Iajz3={Eo}ShEY<{xi?TYG4wx9oW-^@+MmBSX!-f*j(H1B;v`g71V?ET~DRrs zH=dd19gaxz-)EL1$vmzbRT7uf#Rv0pzrH`QP0zFxQc>bY}~(`Pj<@?wa^@z0T;qjmArrVZ^9 z_>EZ?F%0cec!J}ChNI>eXkC209C#VDF1}s?yewK5U$2CAc|6r|WmWuhWHq!dp6-kQ zua4H0HSo_753P%*Jq7TZXk9$E>B zf!9at$|(GE@LXsVcuUz3ycJqkcEZyp2hV>-gU8Dz;JwkhGC?*&`+M0O?LK&pE+kwEN>JlZz)o+oL@gPnsM&`RM>3g)tpD z8m%kG$S&Yx(YkURo<2GFQ+T_9Prwr>2Y;w;9QY(Wg>vL%w62_jb#&xZw62_nb#x>| z>q-^t=*a14UA%ewNANVXu1v=|I(Ysy5qu`r(ZMsY{lJ%C9UVOXs(@!>9UZw2tt+?S ziIpSs(7Jd6b|Cmxw665xd72})p>^eUY>k8GVh4loltaOHp>^?u>~QeiXk9!hn+m=U ztt?GXTkOa}w5~jWEq3HVw5~jaEq3H#v@V{kodkXatt*dWiye6ktt*dX ziye6att(Gsiye6ett-!Biyc{n)|FSW#SWgwO$R5~Vn+thx_CO*4IV`6${TVH_)WB~ zyd~#>-$v`oJ8}Vd2(2sskc+_YqIKm1yiw`MhiF|q)td?a7_BRxVE!EW6s?P=dzXX% zh1Qj?@tf%mp7qti-^x|s@6fvPy<7tp=NfR%X@K)+adtUP@XyfVEOTaqe~uPsnR7jO z3A8xNoF4E}XmOS~H-dkG7H63=7rYEwoMp}};APRevLc??IkFO37f%;^!7HQ18RXoK zcBFGB+F#)*o+Im_b!B}#$#d}R@gDF7&b{Cb(Ymscb3b@AT30r9THsC4y0WR$2i^>= zE5CLg0B?>KXO{C2cq_E7Z0+=ew?XU5Z=FZM+oE-4JLhq58Lca0oWFs`qIL0f^C|ES zXkGb}^9*<*T2~%%7J(l{>&j!!^JpJ;UPSwZ^D^4MIj_Kd60IvwIj^C8+8KcI3|br; z&LDUZS{F|--vmF8)|D5Wx6!`n4559=c^7RC&jzta&|;6^`Jjs@nIEHF-2D{o&)v`A zwxPv!4^IlQN8GQVEQJ<(1kVhyN6=!A;JG382wLnBJU?{tKCR>6y65K5E{`XOuB?D( zh}cJXg6PUh?viLXcZWHS{06Oyr=UxNOK4p@=^PF|5Unc*xyymO(7H0kT>*SBT2~Hn zR{|f3)|JEDmBELjb>#?mRq#}_t{mx(03U_cm80D?z{j9<@zk^cJ`Sxb$Gb)F320qB zMO_Pg5?WVIcGm%)g4UID+;;G}XmK5I*8|^y)|J=XQQ!ovD<8WXfmgResC%GJ3E;A_yja&2xOa1*U7vvPj~ z&qnLY4Y`Tn9<;8^$?XTe5v?mXjck7>&k7p$>7`3x^hSEK=7StUAZgQ z1zv#GmAi8XgYQA>%6+**!S|zeCC(iVZlT3BHa8XgAX;2kb4P(6L5u5Z?ilc6XmK{> zjsrh|7H3oL1n`q+aqi?!0xv@A%FDS^z<)>U$}73kz^|gke$Q3G30hYMb2acAXkB?T zHy!*IT36oAoe6#itt&&hZty?Qy7F%B9PoQ+U3ouu9{2;au6&rg0Q?bJ980;2z@MOX z<@4MO@E2%Z`7$>X{7aF$;&{&A2p*0W$8&xzcsaB< zp7XbWS3ry7IX@q~5?UP3`CjnKXmLE}ZwIf67RPh`PVfk{IG*zhz-yqzwK{(fcqCff z?d0zTuZLV3|d#l=AQxo4lSi|b+jWANc&kig#lh#Jb>-rG8+ayK+=Jzp1Ye5Qm3n>{_)4^{ zT$NuMd^K8EuE`GvM`&GXw60vAUkQ8zT334VD}(2tb>+tVs^FW@ zx-vIE0(>)C+~eif0MA2Is+tA|Lo?i=m2U^_Y<<|kZV9i4zYb~d zh2Ms6hqU*?WAGhN+jfV?;%`H3dnddRz6WaCyWvgn_aOK8@Mic2ko$Xh3;ZL<{XP74 z{1d2cpN6-__d@RP;cfB#kUA>0QVQb*ZG;$#!%au*k|HRp|-WK&%#?m>L~jhycML5vd_cYKy7PlFU0SF)KT{N zczdXAiT0=QE>PRL+MmIbptg0hKZkdR)Jyh-cuz=OWPbtg3$?AEeF@$lQZLz;;derw z`|K~_cR}hX`wDz8q+YVG!c!pil6?)H3aOXu>+s=_dda>X&w#Yq>>KfskUGl#3O))_ zN7-M)vmtFZ`xbmOq>i$0!wVp7Gy5C(I7r*f{w6*FYTG3HTloD@+a9p*!XJd%_K^K; zd@|IwhwXdtDNx&{+26w-h1xdV{sI0N)V3M+kMNmL+h*H8!RJ72n`_^T&x6!m_WgJv z)V8PW2l1z&wk@!KhCc&o3)w%%7ed-O_M`YJNE^fcCH^s_jbZ;9{}j?TC;}Wdu_>YvUA=ijQg>j8Qt`SEVULA7p zcGzK*BZ8EhAa`nq3*O==18;SdgS8!zYW z7VEeMHgr@cr4i)b?WhTxIBLPBjvHVzM-;iuAyu?f^g=iu!+(RER}nMu`cT_?M$E!{L2c_DF$eDh>Enu+hxdc@aYYp3 z10a1|5%ckZkUp-6r}06MKCXyo@Vg=BOvH2e5XdBarJ4WE{y3!GaJul>kh;QI27dxlKRClI56(*X z^N?1wvkJZ#YTJv>tMQj0cPr;L_$tU#xwAUH25Q?{XH9$^q=oFPg>Qn?EzTS8&5*jq z8HI0!)Gf}N@z){siSt%`2c$l6*1>l|>Jw)@d^e;%ao&c%1F27(G5EWXr*&s6{yyYs z-Ps8L5OODVHo-rJTrbXM_&&(>;%tE*fLt%m+wnt?>&4j`KMc8EoNe(Vkn6=6hkpTS z6+7GE-#}W$&JOqqNUPY{2|opC6+08~?;x#WXBYf?NUPYHg#QS++d8}BXCSR&XHWbW zNUPY{8$SoBubh4H-=OA~-2L%CpthZN-iiMSd5U-5h5rM2igymi|An-QUCDSD)V6R} z3T}tAie0I=3(^vHrQ_uwcYN1yJQ8xpcV*yLLGJjjk$5G@UEVbczZ!CvcV*+(K<@Ic z(Rg*pUEY<4*Mzi+T?Ke8sBPD~?!|9_+7{&+hu;Lb@4F`8wISmXu8DYENd4@(AFmI& z*Sj9X8$epZuE}^~$o<_l1#b$uzq=m6n?qW{u1E1!ke0CPF}w|=CG47s-vN1Ycg@1% zA+2K99K1c`$=x*%?+9rjy9)6xkow0pAMXySe_T)FJt1|D>lwTsq|R|YhYx_%Ij)8H zKuDeAdI28VE^_U{r$Xu?*W36s$P>M54?Z1IFS*{sXF%#D*9Z9HP}}CXKEmfh z>Lu4F_!E#ejB79cB&3dV?Z=;j)KRX3_yS11qg=n???9f`U4P&oK%UlJf8rlOp4MF#@lPOik?U{# z0HiK*UBVAR>LS;F_+dz08gWt}6KNkSBE4)%bbH6T0gf`~sv$ z(N!J)3sV2MYU2MwdJe5xxQ2`uSU2F|kTC))3U@+AZLFJd3o=Gv-HMlmj1gFM@bZx7 z4yzts5%Sz&-G*0&JaWz0z_( z!XJiQkJey(D&%^!lJRMf>&Qxh&s(W*p_LAoSi|93D+6w^MpAMswgvYG=;WyTU@VGS@p0K9Clhz~fl=Ue5 z)_M$nXU&ACty%DUYYzOung@Th3gJ)Ie0aus8vblO1AnoegJ-RU@SODm{MA|lf3uds z->sM6AJz(Z-dY9!wAR22);f66S`YuSHp0e{udo$OAV)UxHM|*g*m7)9jJVfUQH-%K zQnCDYaxILq)z-1LoA|9=EMw;J@D^KV-GX05R%ee4QdxMUDvMvGD&kkE%6KJJ1Fxj6!>g#9@G9ySysD~=S5lDnSoI_xtDeFess(sM^(@{q6t$8T5L@!Qo7yp`ICw^FSMgE`V_xI?ZfX-2kL0v| z`WNp)6R;k?tJPQ6f#GL-c6OoyQ}hecU1xJp(^4%RAs!Us*3ki)$m^G zTD+I4f%jI|;l0)Mcpr5m-bdYp_f@yxeN}C|pQ?-ZQ}yxwDjM&v8sGy|Lwta0jNhr6 z;&-a%_(0VXAE;X4cd0h`UFr^ekc!6#srL9_)e#@8I^%b%MEq{m6;D>(@MP5kAEJ8U zLsTC;MfJl|)Bt>_8i)^7gYZ;!H=e47;Av_oo~F|9bTtf5S0nIY>K=TU%EX7OEPS}i z!AGcEe1yu!Gt?M7Lyg7nQRDG@)P49!H3=W79>6ozLwKfo7$2pk;-l0wJWEZ-v(yYc zTRo0vtJ!#tnv3VCC-BkgNqn?=3eQyw@LcsQo~NG2^VA|dUoFP-)l$4by@(g6<@gx2 z5+9>hUDgA+Kx|9JMjC|PW(Q#8=t7& z!6&MB@k#1^e3JSQzh8Zf->*K!A5i=72h;)lL3Id!P#wk}Qb+KI)ED?<^%Xu@9m5}1 z$MJ{NNqma>7N4R{<5SfS_*C^1{)qY+e?*S4@Y3g_UQFR`FR9(QQtH1E+>L2_u z^)LRIvQ?|ci;8u%IxrlcsT}xB<-{LX7XG*@i_cQ!@mZ<@K3i49XRFHi990#cqpIO^ z)wTFsRRf==uEXc4>+vVljrbGlCcIGHf)}dV_>-zG{-mmp&sWj-eANJdN;SlvQjPJa zRa5+F)f``-TH*^-EBqPN27gA~fj_I_@n=svh_v z)eB#w`rt39e)tP&0KQla#22eU_!4zDzC;bdm#U%oQk8};Q^W9OY6SkGx(9zzW#TWX zEc_*vgD+RP_;QtxuTW#~6>2QLQjNz~s{8O&Y7)LmJ%F!P58(p%gWi=OnSv`TTS5M;W)l>KewE*9sp2at+=kbkd5xz++#y6>@_$%r~ z{1vqve^sr-UsbE|*VJ14HT5#SS#7{Kt4;V8^(wwaZN|5%t@u{;I=)S9$G52+`0HvX z{<_+YzoFj2-%#)3+tvH{cJ(3trurCvQ+Q2X#5>Hz+hI)uNa4&yu35qzim0^g;+ z!gr}-_-=I^->pvKZ>w+dx7BI<9rXkLj`|7TqkhKssI&OH>R0?-^*jEaI*-4nF5vI0 zzwr0fKllggU;G0e`|I)TB7IFA7><9W9Qa4diGQpt{9{!X|3sC?KT#F%PgO){HVGE|3by%U#Rx@m#QQFrRt1-r4sS4R9F0K z)eZkz^}vs*UidN92meO(!@p4j@Z)MAeq0U0PpG@`6KV*4QVqpVsx3CUX8_nP~-6*)P4AmY7+jVdI0}PJ%s&k8 zsrVT+4gXn9$A4Bc@L$y9_%CWUepb!J&#EWzbLvU_oO%lXRV~1ORnOwTsps+E)FS+M zwHW_hEye#(FXDfw<@kBE5Ma#Q#$tR)lE{vCJe^SDc2 zz%Bh3Zs~vUGWuV<3>{vy+qJ%ycDoM8%V`H*PCN1P+QQ50vUsE}k4NeXcm-V%ub?aA zSLv$wRk|8pQD2K!)HU!*`Z~Olz8oA4_77QBkCjaSum@v6E$ezlIquhtFl zYPum_O*h7`(M|DdbaVV#-4ef6x5BIIHh6V?2VO(R<27`9yr%Am*VLWy>vST1o$iX) z(%tY{x(9x}?uB2k``|a|e)tV~0Dhw$h~KCO;Zgc-JW3D2Z_-2Yn{*m}vmS=utViIt z=zH*6bS8eQ&cbiiIe2ZIi`UlqcpW_kucOD}b@h0>uD%birzhd{^aFT({SaPXKaAg| zr{cHiX?TpDjmPM@c&vU3kJStCMtTw6NH4~l=;e45y%KMxU&fp14R{N^8E>Jt;w|;- zcuTzY!sGN| zJWe0M}P!aM4p@lN_I-bw$8chb6+KDG=3-7Kg;N5jayr-^)_te+oz4i5Y zZ+#=)SJ%e->biJ;-2m^e8{&8B=J=huC4QH_1HVhhXI58xy9L-;5?4Iiba0$kJsDr33>-ULGQ#T>UZ&p`hEO<{V9IG-iJS^ z591H&Blu)}44yddVHR~5r0D8gg>Eg!3%Y5yinK0pVam7Cv`MFUpK(#>xTGK zx-tHgZi+9^t?&i94gRcdk3XwB;?L`@`186OzDW1M7wLZZVm%07tnbE`=ppzLJrrN6 z)9|Hw7`}`bHP9y1_uwz;O#DTig}z1g&vEq(Btuy`aXQ6o`kQ` z58$ixL-=a_Fuqz(#nPOU#n-}YxU#!Iz1a-r|04?>nHG+^^^E|{S>}lFTgkG zXYmdCd3>W@gm2V~@lARuzDd7`zoM7pujrNdt9mv5s$Pq~reDTi(;M*3dK11`zlv|s zoAE7rE522~j&If5@ojnszD@7MU)Q_w*Y!L28~R=R4gEg8U4Mvg*B|3=>QC`E^*(%u zK7jAghw!)bVf-z91mCH@z<27e@Ll>CzDpm+ck7e*Zv8F(wmyx&t$)DZ(Ldqu=%4XD z`YgUj|BAn>f5+d|=kfRS1^hkz7ybcVtF!~Pu1VWZJMoXSg@2+e;GgJ<_+DKN->a|1 z_v`EN{rX1ypstM{)OGRCbOZb|-4H*l8{>y{Q~Yz?9RFOm#EEMg`32me-Q;@|2l{5ze4f2VWt(>fnNt;gWs>#_LvdOZGv zz7PLFPr`rH58yxQhwz{D!}w2nDt<;!!_VmH_|JL<{_<&`dR!}{XG7gUWEUq7vsO{rTFjqMf?xF9REYF#Lw&1_<6k+|5Lw=|EV|N z7xX6lf_@dhs5j#m^;Y~Z{W|`a-j4sRci?~Po%la`H~x=)2fw7>#V_gi@qhJ)_`mvN z{6GCE{-555+rkduwy;CE3OkIeup_t*`vTWtU*Tb4$MCSQ?0~Ucta?0J2915LmVKgMA&TC6RnB6h@r&2L?N+=c!T(dxWmcY zl8KSTlf;L_e&P&qiLkqPgD26E$R_?HA}p3kv>_6S4B}hDUWV-@#u3jGdx$~hST<2W z%p&F!Yl$<&A4J*mOhYsvIuXN(JYp{KUL@~(tH9e*iRMHB@iFnvRs1DR5w}(3?Ucj- zqFE*0I!QcLnQbIqBRW*!Es8`AQLZX)uq3js<}HlGOyVSQmWZsz+b)TluHkK@#KXih z#3#g2;x8iQTHYv3{6^f#$(2HkB|aeb6F(4E4c>T8G$9@%Zmh}MNU!6~$;978ZY|b< zm_tO|z`i9ih|R1{3BYyP+=YM4Tlq5RvtG`zY~Decl{S>?O_;-`&Riqd8_VytR`^CdLp)33~(H z(n&NR=EZU>i8>8AFNp5MFybxZN8(SSY9rpbNxVq>OE?rTY?;!WyADiPb8I*F*-hc~+tO$c*is!XgQwh+Dg zajp~1`g6RAe#9bT74aJ38o+)fY7@T`)}1!nH^ezY59DpT#8G16UA(=Q=r@RUB(jM; z#An25V)9_l9pVXM_}#p5m{>}@OuRwNOXm6|P7R?>BBrNMw-Swqvag6%>8u~olQ>KK zL%4?VnHWsmL+m8>5hsYbBY3MbQ89ySkZ44N-@|9(H^Lgp@y_IYCB7jBk7AvONyKMa ztOv0rhx(LwWi;nJ@i8$ymvfz1MSPsc`Acjlp#CDRzLz(I6Ag&1#QVfi^LZTC6Y&pG zX*}l~@eHw?s5pW3BN`FU-^c$#LEJcrX^0Pr6GVpx*iPbZ;xKWNI7cKr$i0EMhv@te z^&2sNGS@8eGEwj_$Avib2=`3lPvX>cwx5{(82gv#H-qga4iLwPGenb_)LBF~ViU2O zI7lpdoNJm$n8me4Y$4tz_7QbwbKMeMi2OO!D^`M42b3&xluu4~gwh zvY&|0h+6Zhr-% zq7Lyp@ei?e754xlX*I`%7)E?b93##V``2*aCMvDt9!AW6nRXcwx1Kfyk+6~JhU7UBs-NbI<0C9?#zngQFc#(LS*i7so-X%UI&J*De zune2~pZVMVZPtzRO?%SJpE{)7lkQHie9{||{@yfqf^YfTN$<&ZY5s+|{|HU`pQGIg z-esCkCVl>*;OVtI^DjA{M;>;UH#GA)&$(-<2)+ps!8afx_~t_dztwi~tp_K+({}QW z2PePLcJgfpr>!zkg{Z1re6xXfVJnMoHCVQ5iRwfR70EXkBKhV*1={l!_@+WdzM)W& zZzfda8wnNpCPF2?fl!HW9#rBR2bK7yL1n&SP?>KQRN)&1Rrn@BeZE0ZpKlJ-=Nkj{ z`KCa9z9CSbZwB1PHv(?sn*g`*4S?Gi`M-@3|JxYpk7k5Fnvwlzo*kkY$&Y3PKbn#I zXh!U#8L5wEgg%;)`DjMuqZx^hW&}Q(k@sju+@l$3k7k5DnvwNrM%1GjNsnd(J(`j8 z7)H!v7%7ioggl0k@fb$LV;BjK;rS$nk?$Bryki*Yj$wp5hLP?&V;G5U#RzmOMxI+U;@p~%<~EElw_#+t4I|2J7)fr!2yz>q zf7&o&+=h|jHjEIrVPv=sBf@PM32w`CQCmiS+cM(YmXY4JjPSN)WVbCNx@{TBZOaI5 zTSji%GGg17k=i&$XyX`}jblVMj*-|nMquL@d5vSlHI9+iI7V3G7+H;DL^Y0))Hp^^ z;~6=PXT&s~k&%E+ zXGYRGGlJHck+aT>n002PERhkiL`KFE84*ilBrK5;utY|_5*hJIWTY#R5w1i=wh|f9 zN@OG}krAv!Gk(R0RU#u*iHuMsGBTCOh*TmYQHhK|B{K4q$cR%SBTZcxVd}#3Z5KwA zx-gQ|g%PAKj2v}g#Hb4+MO_#n>cYrS7e<7-FcQ>-5uh%N{B&W&rwb!JT^Ql%!pKe+ zMs&I`lGB9|oGy&qbYaA%3zbnLh{Q}rB4#oIF_V#pnT$Bh=%NDI?n=u4i10t4aNHiiE6HSPwL^Gl}(Sm5HmoPH0gb{%yj07xU1Yik0|4Zoc zUqVm+5_vRWGGieyOb+(Vgf) z^dx!_y@@_VU!ot;pBO;gNem?JA_ftIiMxqpVhE8!3?)*DG$NfCMhquL5E;Zh#7H8O z7)4|e*+h8W4?@@@@4dpFQaFC89n05=m}p&5BM^AzL(MCy^J>>yhv~N zi?&I`{lo*rgTzC`Wa43B3Ne*?F_)M}JfWA<_p+Rx z>gDuMFQ;dEx$SAaf?nwryq|srJ<=<9NBs(VqgU7#5{rlzh{ePby^>z%mGm~Rq?dUm zy~``j2PUQKWCYI=cJ)BC%cUfkruCAq5buGQAYi;lAb@ZgJvwcW>M0`wqLVQZ>CH4{fi37wz;t=r}aagaXhjcwX zqwDDrT~ANwdU`*>*4PfsTQF9Go_@f~qmZ=i>A13i-) z=#kt&Pvi!AAUDwSxPczW4fHf_poeh-J&POYQQSaJ;s$yUH_&sq!Soo?Q@D{H!j1F{ zZlp(WBRzo|=>gnG&)+6`{AfUhZK8*76FqyI=+WC`3lDq6W)FMS^yt|l!hW?m2^V1z zWr(swIifrfNmL-N3cJADFD~%ziwnH@;sWozxWrp8F7eKbOT6*o67RdX#M>_Z<6Re8 z)d;hzn#6TPtuTkWp16T9ZH;hSGrqKA{tIzdtE= zIh%I>)tynjH^M!t1Kg|b zgGbeC!Ve_<2t1{#l;>GP^?(=ELbyk*g?rTwcvKw_o|g1K;VD%n(v+_SFREs6kLn1I zs)6De;uGOTRVZ8o|5HbV=b=k?s9-o4M(T%z3xpeB75%mFZ{gKfnKCiLPQqkZMNbgU z7jA^L^v^)PJsz}2i&7R5kDdPQ&^^oNxv2*=xEqmPZSmk*9hMhekuF| z-l?yxYSt|p-l;nZ?}o|xG2u&+@+MrU_KW{0=@D0(GEu^|!n zMm596Fhh5SdsKh%k&-@H_>6F)@B=tbpA|Z<;R@1C;5eNmo&g`#ONE=^JRNbZNvRI! z=|*swN`O!ET@1744~Z`jZZIkOGq_BLS2wxU;4f%G^lxyN zj;~>Id%|5h0}i)k!@Z2Jnz_9!+$|}`;4*byQmmTPPC7=|Ntg_msRFoAJt`?L2)79L zO8P0`MPa$?%p7hOwuTE;Pw@=lgK)2YPPherqn)+PdR{HO1%9L3z`d%6q$I;1^#b8q z;ZC?$9e{h(2}$`=Smt_DvKHKi`o5mxqQlTsV*QO)39l>n!NJuG}m z(qDqJ!j8kI!)o3_-&t5D+@mJIDPglDXJ0d&}UkR&zt6?L!F08w7BwS&e z3s>0|!MDPW3(M9v>CteNtvUQCY?yEwd@F2&@C!KHc3gNGejQe>j@iZ=;MZX-ggqrC zU3{XjP*PTiza{)!QqG9m>ry9&H57Ie-XokUTrAuUSJ;lhRkk1CxiG#)NlGl-qmtmc zux#NRNm(KOf$)r^*z21zw+a*B9+e_K8LqIcfvarWpbEbvy!AHYJ%tm5%Y>i6i16Qq zWuuMX1j~i@6pj);D(No>w+Q!2`Wc}s#+1JquCR52t86{tHR1OQUl8tsD{N=rD%;=i z=J3`H42KKnK;G#jJShBA(r<`0Wx5Cp;Bean7#qF_E>xSuKZMP~FAA$PG)rj)SJ~oV zyYOtdM?E6G00r!Vb5H1sbBD@HP+x~+KRi&0@D`Ma>)d4P4cfzm3 zCkdaF^wpBSLsAY4&q_-8?WTM+_;q*#@%G|_U_tm;$WeoH!WY85YQ3cFfZvDzEsShs z(r#ge-nPA&!#!}DeY3bp-)}dZCS@KM zE*J7U9@4+F*XYPdK!kZ}_|D!N-)4Ud)`~D|m=Ix(=`MTEPA1pzu82i&n?1g>nR6Fm zPe>W~V1(ga;`{BL6U_fMZsv1PxXqr}#Z0>j?zeA(yM){92k>#umPv-=h0nu6=SE>< zH%dBR622_l4hx;;nPsmtp}S!(;SgBp94kIs__XjPc*+^ogZra%8sw+0Jq@eFDz1gX z<-%8Cq4Q($Z-u`IFTpyl{9cCBVG~#R-iB8TZ-#}=R^r=*dxQsJf~!Lx!-24`>r3Ic z!rx(`vrJ#^u&(LCdBPW9p>q=)?TYDV*j(5V7CHxue=R&MJP)V1hV|!(&$SD#a5W!b zm;_&O?G+voo`!`^US&)A6yf8-XW@IUN&^k+z|UPPg&T!$!9wRj_@is!U52T`(Xi0@ zDE!>@f^em9GyKuDTlkUisPH@CS>eAzYmg~fNq7VN&vhTX%DN~XIoS9O!e+uG7-c;N zW2}aE8zu?wf*q{)VS@FacuulO87F)M7CKFOlvQSkVP)ZsFvHp@{6P3QEOefM_gceK z40D8&V4-s^oMK%y)bLtiZCL2M14dZ`V2m|Pm@S+LJ6MkjpAjwP2xM@3G0CH2l$JXJ;HFTa4IZxJ}>^N z@J-=IFsw}b48wsivdmH8N#U=s(D|>h>^&y8y6`4pLtz_XCt+V$v&^T$&xPMX&M5Im zMw;B&!smr6g&T!$!N@Wn2@eTR3eO5J3L`R2nM%SM!n&|#nWn z!g(;Z%+Eqz8;w_l?aIs&E)#B(^u59p!apQEBFmJlDQpD0m)RtIL-+wKbbbw^tiIWX zcMCIN_cCLJ4+>`qpAjwqr99-r};X>gWSm=CP z{7d1t!rz6w4x92W;nl(@VSQmsVMk$i;b38gFjx2h99`xpoM)X8|65ot*QD2i^Q>6$ zws3Np*M<9pr-lCtE9aTqx^PyRRl-feov_e(2u4|5^JPy8Q{k*KM}#MY=Y*GpjslZg z89rBLmhdUzi?GnSUHp*nYvCC><1xep%*o;c?+vSm<<)H`87(tRrj&zbw;E*i|?X zo-6Z;a1RVC+kS#c83@D5X2KZjjPSfL{64PMvJ-?43+KW@=Zi4PIw&dKCYmz+h3Uf4 z!tugsux8o+gw9FEtHMHOU0AQ|3gHIf4oN=@qpbe-8x9d>!FpxC7yc@=Jz#3uvaoI0 zk#L?hQT#FCbFgRGe_?9b2@jgwIWV>CLYQ6l=7$WUg{@$rvk#22W(XHZ`f}lV;hQkV zYC74ltuP5jS$D$8W#51a)+gczg}oj&>30b;V4>6G##mGF7;BdBIT&TFfRoF# zZE%V85u9gzDJee+F9{w$Tj3R>DMB=o~6OUN~7e2hOve zgI|~Z3!W=`*G!W#3Wk;YR`?H$EI09S!>Ph2V4-t4tXb}sS%xvf*09joSA3LkjPPL? zTkdPvuH2y6hPg1xS`K5Z8|E0+6*h-`%PoKj)@t#Zb4|)E!p5-BY0{&tS8&>F!Vh73 zxpwmmy9x)wLT47tD|cFWPWYdsS9*dcqjGbF&j?q*Lg!mB%KBV*TzD4tEjPT-Fh@8E zK3MLeP(NwB0-R^nfJ>~pa8|igVS%JS0vDD$3D=kFFrRw0+)g;pIt*u(`&Lpez)#9e ze9CaD@CnG4itiSFBs>bgEZ6I4!@GnTkQ%tQNtr4svxLvVPs*(jZV>JeekeRBJOR&@ z8@RwQ2ZohDDEv-RE(#-`;kcKdEqq$|5-fC@-moaE_Ophu!nQE7{Hww@g&zq&7akX$ zg;CZ&Li=;ZE5XR}wS={WO@;BoF2Xw@^^7n}c%P(C6V4GX6s{6(67Gai*2lungr_9^ zobWH9^LftR@(&AV3ZH>I=Zb$IJRm$S{8{*?(7w=2`+)FK;e6o|;cDSl;XA@lgkQqg z^34~Sb087MmLDLzM^f$+pDuh>Qr3#UF8o+hj*0&a+m#>rg5iV0`NB2AUBb^{_woZ5 z8>R|J!$PO&_v>E%aY>mkTqayE+$ww*4ldtriD6gaKv?L^75_^Zw$$WaC9EmDMc5d2 zFMo$HLD*lID$Ep)7fuz<52K=)8eBmPDT3G0O2YyoiE8%y-Kj4?;)oMdaSPh;lpC_CG!y@^L11Z&DSY%xo z8Tqnsi*OI*Sp&vcL)RLP6pn*6BhLyi3M1B;lGPzk!LVlJF5!p5Bf@WmzX&hEdXf1r z8%`8H1`C}FVT;J?)*Id`Yyu0NNifQKPqpOF*b z5^D}jjywzJS>{U)$&nR=H^R}8li}n@+bbrwDol#J2~Lh|38Sn{!Z(B;z*&*;uNrm{ z-U$nxrk{3JMjV4-t~_%`8g;XYx~W>d1CFin^v94CAP&a>vh z^^s?VdJAVx3X{BnF9fo%bhr?eYzY=~Y`~yB4!!7vMZ=4Xjnc+QnU?!br$71#DO0ys+$U zYTXKnaEu~y2Y8v#X}f6SU#s-7ZJHz}$2PFF>X(w4 zk(QF59+%&{U}#=yZbnXiMs`;3)a;z}{u%irI_Kx-B&Fx&r3_Eci_06AmD(oFJzb~t z{P=N~FXo+n$a!@bo0FZJ-zR-kP9|#-vS|DC%=F6?>5-D3IwIsux@P3%#}{N|<|kx@ zEazTWTz*nY7TZ56JuAOcZgxRV$Z6OwA@j|$FI&L>V023#d-+MOs8Ia4Ug>$+1-Yr| zp*N%;HR&AjEaY;b0#-{+zaCFfN%tJqkx5$#5#r;dzEP2~dX zlkI!`xmR7vl$?co%79ceyMV-o!BQIrO>N{(Wh+J6WoPB(=N6>qv#EJ~Qif)xn{5g@ zWzfXfMzUx#JF$eUjQk9$n(^s9v-3KP;ZlNb=1QG;0%dUPZHtZE9A)lr_7=ly|2D>~twtGPPmQ)S!v6&4O*IJCRL_ZEmvJ zrePVmqvBFcZ7nM!$t4%-E?hFTVbHQc6JuM*%CKCs(A;$D=lF36X=aHexGPAX1i32| zWt*MVF+10LMS3RcNX46;8$Yf`N-n2CiA=eg@_S1iC3hFkMD9g*&+VIIZdRThg zEnj?l3OWP7M8Dbi<#?}i@0J#SX8y$=q^j(Zn{BS+j4XH6;N4r^RW7a*r8@LmX7D^y z!xilw--+D&$h+fwbNu&`|6RnlocG4&TjluX%c4um^c*6e)`IV(C0D__n#Fg5QZ_xH zfZz591k(f!hM^EhG+8<>i*NpgeO zfVmV+>bnE-{3oQ^jt$vzE^aAPj)Uu|ul$m|O)I}d|CX>{mgkx+YJ)RpY3ceEGG~~l zW$Tyjz2J-Yk?dl>GSV37FxH&qS*cRXm)g*aW#Pqjf5>7bw&?$P%3vY>waNdnppZrV z=USqY{lBIxu|GpjEA`p`Gl4mnA?GOdNy%$G

    Hde9s`6LqLMxK{D4}z%&7g#b-lN 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π7q!{Vh5(fTfGxpxH}cAZt_8KBEMz6?(KoR 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Storage.Management.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Storage.Management.dll new file mode 100644 index 0000000000000000000000000000000000000000..b9675dcf8b193ca40eb3560801b2e6865198aed6 GIT binary patch literal 132472 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 -BH*MTk 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 KqSOx1MEnb1uEz2J literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Websites.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Clients.Websites.dll new file mode 100644 index 0000000000000000000000000000000000000000..6073480a7f7a6e0bb47af22f549ccb857c12342c GIT binary patch literal 3271040 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

    (7kEZS1*4P~0Xih(P$f3nCCUbwR`{Os&VcR^j=v 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 gkMnIyhQlV2;PX2fp(yJf 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%0D0rgNHj&`)LY{C81 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll-Help.xml b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll-Help.xml new file mode 100644 index 000000000000..181289ce1c10 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Cmdlets.Accounts.dll-Help.xml @@ -0,0 +1,10328 @@ + + + + + Add-AzEnvironment + Add + AzEnvironment + + Adds endpoints and metadata for an instance of Azure Resource Manager. + + + + The Add-AzEnvironment cmdlet adds endpoints and metadata to enable Azure Resource Manager cmdlets to connect with a new instance of Azure Resource Manager. The built-in environments AzureCloud and AzureChinaCloud target existing public instances of Azure Resource Manager. + + + + Add-AzEnvironment + + Name + + Specifies the name of the environment to add. + + System.String + + System.String + + + None + + + PublishSettingsFileUrl + + Specifies the URL from which .publishsettings files can be downloaded. + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + TrafficManagerDnsSuffix + + Specifies the domain-name suffix for Azure Traffic Manager services. + + System.String + + System.String + + + None + + + SqlDatabaseDnsSuffix + + Specifies the domain-name suffix for Azure SQL Database servers. + + System.String + + System.String + + + None + + + AzureDataLakeStoreFileSystemEndpointSuffix + + Dns Suffix of Azure Data Lake Store FileSystem. Example: azuredatalake.net + + System.String + + System.String + + + None + + + AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix + + Dns Suffix of Azure Data Lake Analytics job and catalog services + + System.String + + System.String + + + None + + + EnableAdfsAuthentication + + Indicates that Active Directory Federation Services (ADFS) on-premise authentication is allowed. + + + System.Management.Automation.SwitchParameter + + + False + + + AdTenant + + Specifies the default Active Directory tenant. + + System.String + + System.String + + + None + + + GraphAudience + + The audience for tokens authenticating with the AD Graph Endpoint. + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + ServiceEndpoint + + Specifies the endpoint for Service Management (RDFE) requests. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + ManagementPortalUrl + + Specifies the URL for the Management Portal. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + ActiveDirectoryEndpoint + + Specifies the base authority for Azure Active Directory authentication. + + System.String + + System.String + + + None + + + ResourceManagerEndpoint + + Specifies the URL for Azure Resource Manager requests. + + System.String + + System.String + + + None + + + GalleryEndpoint + + Specifies the endpoint for the Azure Resource Manager gallery of deployment templates. + + System.String + + System.String + + + None + + + ActiveDirectoryServiceEndpointResourceId + + Specifies the audience for tokens that authenticate requests to Azure Resource Manager or Service Management (RDFE) endpoints. + + System.String + + System.String + + + None + + + GraphEndpoint + + Specifies the URL for Graph (Active Directory metadata) requests. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Add-AzEnvironment + + Name + + Specifies the name of the environment to add. + + System.String + + System.String + + + None + + + ARMEndpoint + + The Azure Resource Manager endpoint + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + ActiveDirectoryEndpoint + + Specifies the base authority for Azure Active Directory authentication. + + System.String + + System.String + + + None + + + ActiveDirectoryServiceEndpointResourceId + + Specifies the audience for tokens that authenticate requests to Azure Resource Manager or Service Management (RDFE) endpoints. + + System.String + + System.String + + + None + + + AdTenant + + Specifies the default Active Directory tenant. + + System.String + + System.String + + + None + + + ARMEndpoint + + The Azure Resource Manager endpoint + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix + + Dns Suffix of Azure Data Lake Analytics job and catalog services + + System.String + + System.String + + + None + + + AzureDataLakeStoreFileSystemEndpointSuffix + + Dns Suffix of Azure Data Lake Store FileSystem. Example: azuredatalake.net + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + EnableAdfsAuthentication + + Indicates that Active Directory Federation Services (ADFS) on-premise authentication is allowed. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + GalleryEndpoint + + Specifies the endpoint for the Azure Resource Manager gallery of deployment templates. + + System.String + + System.String + + + None + + + GraphAudience + + The audience for tokens authenticating with the AD Graph Endpoint. + + System.String + + System.String + + + None + + + GraphEndpoint + + Specifies the URL for Graph (Active Directory metadata) requests. + + System.String + + System.String + + + None + + + ManagementPortalUrl + + Specifies the URL for the Management Portal. + + System.String + + System.String + + + None + + + Name + + Specifies the name of the environment to add. + + System.String + + System.String + + + None + + + PublishSettingsFileUrl + + Specifies the URL from which .publishsettings files can be downloaded. + + System.String + + System.String + + + None + + + ResourceManagerEndpoint + + Specifies the URL for Azure Resource Manager requests. + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + ServiceEndpoint + + Specifies the endpoint for Service Management (RDFE) requests. + + System.String + + System.String + + + None + + + SqlDatabaseDnsSuffix + + Specifies the domain-name suffix for Azure SQL Database servers. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + TrafficManagerDnsSuffix + + Specifies the domain-name suffix for Azure Traffic Manager services. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + + + + + System.Management.Automation.SwitchParameter + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + + + + + + + + + + + + + ----- Example 1: Creating and modifying a new environment ----- + PS C:\> Add-AzEnvironment -Name TestEnvironment ` + -ActiveDirectoryEndpoint TestADEndpoint ` + -ActiveDirectoryServiceEndpointResourceId TestADApplicationId ` + -ResourceManagerEndpoint TestRMEndpoint ` + -GalleryEndpoint TestGalleryEndpoint ` + -GraphEndpoint TestGraphEndpoint + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +TestEnvironment TestRMEndpoint TestADEndpoint/ + +PS C:\> Set-AzEnvironment -Name TestEnvironment ` + -ActiveDirectoryEndpoint NewTestADEndpoint ` + -GraphEndpoint NewTestGraphEndpoint | Format-List + +Name : TestEnvironment +EnableAdfsAuthentication : False +OnPremise : False +ActiveDirectoryServiceEndpointResourceId : TestADApplicationId +AdTenant : +GalleryUrl : TestGalleryEndpoint +ManagementPortalUrl : +ServiceManagementUrl : +PublishSettingsFileUrl : +ResourceManagerUrl : TestRMEndpoint +SqlDatabaseDnsSuffix : +StorageEndpointSuffix : +ActiveDirectoryAuthority : NewTestADEndpoint +GraphUrl : NewTestGraphEndpoint +GraphEndpointResourceId : +TrafficManagerDnsSuffix : +AzureKeyVaultDnsSuffix : +DataLakeEndpointResourceId : +AzureDataLakeStoreFileSystemEndpointSuffix : +AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix : +AzureKeyVaultServiceEndpointResourceId : +AzureOperationalInsightsEndpointResourceId : +AzureOperationalInsightsEndpoint : +AzureAnalysisServicesEndpointSuffix : +AzureAttestationServiceEndpointSuffix : +AzureAttestationServiceEndpointResourceId : +AzureSynapseAnalyticsEndpointSuffix : +AzureSynapseAnalyticsEndpointResourceId : +VersionProfiles : {} +ExtendedProperties : {} +BatchEndpointResourceId : + +In this example we are creating a new Azure environment with sample endpoints using Add-AzEnvironment, and then we are changing the value of the ActiveDirectoryEndpoint and GraphEndpoint attributes of the created environment using the cmdlet Set-AzEnvironment. + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/add-azenvironment + + + Get-AzEnvironment + + + + Remove-AzEnvironment + + + + Set-AzEnvironment + + + + + + + Clear-AzContext + Clear + AzContext + + Remove all Azure credentials, account, and subscription information. + + + + Remove all Azure Credentials, account, and subscription information. + + + + Clear-AzContext + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Delete all users and groups from the global scope without prompting + + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + Return a value indicating success or failure + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Clear the context only for the current PowerShell session, or for all sessions. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Delete all users and groups from the global scope without prompting + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + Return a value indicating success or failure + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Clear the context only for the current PowerShell session, or for all sessions. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.Boolean + + + + + + + + + + + + + + --------------- Example 1: Clear global context --------------- + PS C:\> Clear-AzContext -Scope CurrentUser + + Remove all account, subscription, and credential information for any powershell session. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/clear-azcontext + + + + + + Clear-AzDefault + Clear + AzDefault + + Clears the defaults set by the user in the current context. + + + + The Clear-AzDefault cmdlet removes the defaults set by the user depending on the switch parameters specified by the user. + + + + Clear-AzDefault + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Remove all defaults if no default is specified + + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + {{Fill PassThru Description}} + + + System.Management.Automation.SwitchParameter + + + False + + + ResourceGroup + + Clear Default Resource Group + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Remove all defaults if no default is specified + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + {{Fill PassThru Description}} + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + ResourceGroup + + Clear Default Resource Group + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.Management.Automation.SwitchParameter + + + + + + + + + + System.Boolean + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Clear-AzDefault + + This command removes all the defaults set by the user in the current context. + + + + + + -------------------------- Example 2 -------------------------- + PS C:\> Clear-AzDefault -ResourceGroup + + This command removes the default resource group set by the user in the current context. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/clear-azdefault + + + + + + Connect-AzAccount + Connect + AzAccount + + Connect to Azure with an authenticated account for use with cmdlets from the Az PowerShell modules. + + + + The `Connect-AzAccount` cmdlet connects to Azure with an authenticated account for use with cmdlets from the Az PowerShell modules. You can use this authenticated account only with Azure Resource Manager requests. To add an authenticated account for use with Service Management, use the `Add-AzureAccount` cmdlet from the Azure PowerShell module. If no context is found for the current user, the user's context list is populated with a context for each of their first 25 subscriptions. The list of contexts created for the user can be found by running `Get-AzContext -ListAvailable`. To skip this context population, specify the SkipContextPopulation switch parameter. After executing this cmdlet, you can disconnect from an Azure account using `Disconnect-AzAccount`. + + + + Connect-AzAccount + + AccessToken + + Specifies an access token. + > [!CAUTION] > Access tokens are a type of credential. You should take the appropriate security precautions to > keep them confidential. Access tokens also timeout and may prevent long running tasks from > completing. + + System.String + + System.String + + + None + + + AccountId + + Account ID for access token in AccessToken parameter set. Account ID for managed service in ManagedService parameter set. Can be a managed service resource ID, or the associated client ID. To use the system assigned identity, leave this field blank. + + System.String + + System.String + + + None + + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + GraphAccessToken + + AccessToken for Graph Service. + + System.String + + System.String + + + None + + + KeyVaultAccessToken + + AccessToken for KeyVault Service. + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + SkipValidation + + Skip validation for access token. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Connect-AzAccount + + AccountId + + Account ID for access token in AccessToken parameter set. Account ID for managed service in ManagedService parameter set. Can be a managed service resource ID, or the associated client ID. To use the system assigned identity, leave this field blank. + + System.String + + System.String + + + None + + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + Identity + + Login using a Managed Service Identity. + + + System.Management.Automation.SwitchParameter + + + False + + + ManagedServiceHostName + + Host name for the managed service. + + System.String + + System.String + + + localhost + + + ManagedServicePort + + Port number for the managed service. + + System.Int32 + + System.Int32 + + + 50342 + + + ManagedServiceSecret + + Token for the managed service login. + + System.Security.SecureString + + System.Security.SecureString + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Connect-AzAccount + + ApplicationId + + Application ID of the service principal. + + System.String + + System.String + + + None + + + CertificateThumbprint + + Certificate Hash or Thumbprint. + + System.String + + System.String + + + None + + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + ServicePrincipal + + Indicates that this account authenticates by providing service principal credentials. + + + System.Management.Automation.SwitchParameter + + + False + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Connect-AzAccount + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + Credential + + Specifies a PSCredential object. For more information about the PSCredential object, type `Get-Help Get-Credential`. The PSCredential object provides the user ID and password for organizational ID credentials, or the application ID and secret for service principal credentials. + + System.Management.Automation.PSCredential + + System.Management.Automation.PSCredential + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + ServicePrincipal + + Indicates that this account authenticates by providing service principal credentials. + + + System.Management.Automation.SwitchParameter + + + False + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Connect-AzAccount + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + Credential + + Specifies a PSCredential object. For more information about the PSCredential object, type `Get-Help Get-Credential`. The PSCredential object provides the user ID and password for organizational ID credentials, or the application ID and secret for service principal credentials. + + System.Management.Automation.PSCredential + + System.Management.Automation.PSCredential + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Connect-AzAccount + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + SkipContextPopulation + + Skips context population if no contexts are found. + + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + UseDeviceAuthentication + + Use device code authentication instead of a browser control. This is the default authentication type for PowerShell version 6 and higher. + + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + AccessToken + + Specifies an access token. + > [!CAUTION] > Access tokens are a type of credential. You should take the appropriate security precautions to > keep them confidential. Access tokens also timeout and may prevent long running tasks from > completing. + + System.String + + System.String + + + None + + + AccountId + + Account ID for access token in AccessToken parameter set. Account ID for managed service in ManagedService parameter set. Can be a managed service resource ID, or the associated client ID. To use the system assigned identity, leave this field blank. + + System.String + + System.String + + + None + + + ApplicationId + + Application ID of the service principal. + + System.String + + System.String + + + None + + + CertificateThumbprint + + Certificate Hash or Thumbprint. + + System.String + + System.String + + + None + + + ContextName + + Name of the default Azure context for this login. For more information about Azure contexts, see Azure PowerShell context objects (/powershell/azure/context-persistence). + + System.String + + System.String + + + None + + + Credential + + Specifies a PSCredential object. For more information about the PSCredential object, type `Get-Help Get-Credential`. The PSCredential object provides the user ID and password for organizational ID credentials, or the application ID and secret for service principal credentials. + + System.Management.Automation.PSCredential + + System.Management.Automation.PSCredential + + + None + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Environment + + Environment containing the Azure account. + + System.String + + System.String + + + None + + + Force + + Overwrite the existing context with the same name without prompting. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + GraphAccessToken + + AccessToken for Graph Service. + + System.String + + System.String + + + None + + + Identity + + Login using a Managed Service Identity. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + KeyVaultAccessToken + + AccessToken for KeyVault Service. + + System.String + + System.String + + + None + + + ManagedServiceHostName + + Host name for the managed service. + + System.String + + System.String + + + localhost + + + ManagedServicePort + + Port number for the managed service. + + System.Int32 + + System.Int32 + + + 50342 + + + ManagedServiceSecret + + Token for the managed service login. + + System.Security.SecureString + + System.Security.SecureString + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + ServicePrincipal + + Indicates that this account authenticates by providing service principal credentials. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + SkipContextPopulation + + Skips context population if no contexts are found. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + SkipValidation + + Skip validation for access token. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Subscription + + Subscription Name or ID. + + System.String + + System.String + + + None + + + Tenant + + Optional tenant name or ID. + > [!NOTE] > Due to limitations of the current API, you must use a tenant ID instead of a tenant name when > connecting with a business-to-business (B2B) account. + + System.String + + System.String + + + None + + + UseDeviceAuthentication + + Use device code authentication instead of a browser control. This is the default authentication type for PowerShell version 6 and higher. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + + + + + + + + + + + + + ------------ Example 1: Connect to an Azure account ------------ + Connect-AzAccount + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +azureuser@contoso.com Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + Example 2: (Windows PowerShell 5.1 only) Connect to Azure using organizational ID credentials + $Credential = Get-Credential +Connect-AzAccount -Credential $Credential + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +azureuser@contoso.com Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + Example 3: Connect to Azure using a service principal account + $Credential = Get-Credential +Connect-AzAccount -Credential $Credential -Tenant 'xxxx-xxxx-xxxx-xxxx' -ServicePrincipal + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +xxxx-xxxx-xxxx-xxxx Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + Example 4: Use an interactive login to connect to a specific tenant and subscription + Connect-AzAccount -Tenant 'xxxx-xxxx-xxxx-xxxx' -SubscriptionId 'yyyy-yyyy-yyyy-yyyy' + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +azureuser@contoso.com Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + ----- Example 5: Connect using a Managed Service Identity ----- + Connect-AzAccount -Identity + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +MSI@50342 Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + Example 6: Connect using Managed Service Identity login and ClientId + $identity = Get-AzUserAssignedIdentity -ResourceGroupName 'myResourceGroup' -Name 'myUserAssignedIdentity' +Get-AzVM -ResourceGroupName contoso -Name testvm | Update-AzVM -IdentityType UserAssigned -IdentityId $identity.Id +Connect-AzAccount -Identity -AccountId $identity.ClientId # Run on the virtual machine + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +yyyy-yyyy-yyyy-yyyy Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + + + + + + + ------------ Example 7: Connect using certificates ------------ + $Thumbprint = '0SZTNJ34TCCMUJ5MJZGR8XQD3S0RVHJBA33Z8ZXV' +$TenantId = '4cd76576-b611-43d0-8f2b-adcb139531bf' +$ApplicationId = '3794a65a-e4e4-493d-ac1d-f04308d712dd' +Connect-AzAccount -CertificateThumbprint $Thumbprint -ApplicationId $ApplicationId -Tenant $TenantId -ServicePrincipal + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +xxxx-xxxx-xxxx-xxxx Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + +Account : 3794a65a-e4e4-493d-ac1d-f04308d712dd +SubscriptionName : MyTestSubscription +SubscriptionId : 85f0f653-1f86-4d2c-a9f1-042efc00085c +TenantId : 4cd76576-b611-43d0-8f2b-adcb139531bf +Environment : AzureCloud + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/connect-azaccount + + + + + + Disable-AzContextAutosave + Disable + AzContextAutosave + + Turn off autosaving Azure credentials. Your login information will be forgotten the next time you open a PowerShell window + + + + Turn off autosaving Azure credentials. Your login information will be forgotten the next time you open a PowerShell window + + + + Disable-AzContextAutosave + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + Microsoft.Azure.Commands.Common.Authentication.ContextAutosaveSettings + + + + + + + + + + + + + + ---------- Example 1: Disable autosaving the context ---------- + PS C:\> Disable-AzContextAutosave + + Disable autosave for the current user. + + + + + + -------------------------- Example 2 -------------------------- + <!-- Aladdin Generated Example --> +Disable-AzContextAutosave -Scope Process + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/disable-azcontextautosave + + + + + + Disable-AzDataCollection + Disable + AzDataCollection + + Opts out of collecting data to improve the Azure PowerShell cmdlets. Data is collected by default unless you explicitly opt out. + + + + The `Disable-AzDataCollection` cmdlet is used to opt out of data collection. Azure PowerShell automatically collects telemetry data by default. To disable data collection, you must explicitly opt-out. Microsoft aggregates collected data to identify patterns of usage, to identify common issues, and to improve the experience of Azure PowerShell. Microsoft Azure PowerShell doesn't collect any private or personal data. If you've previously opted out, run the `Enable-AzDataCollection` cmdlet to re-enable data collection for the current user on the current machine. + + + + Disable-AzDataCollection + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.Void + + + + + + + + + + + + + + -- Example 1: Disabling data collection for the current user -- + Disable-AzDataCollection + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/disable-azdatacollection + + + Enable-AzDataCollection + + + + + + + Disable-AzureRmAlias + Disable + AzureRmAlias + + Disables AzureRm prefix aliases for Az modules. + + + + Disables AzureRm prefix aliases for Az modules. If -Module is specified, only modules listed will have aliases disabled. Otherwise all AzureRm aliases are disabled. + + + + Disable-AzureRmAlias + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Module + + Indicates which modules to disable aliases for. If none are specified, default is all enabled modules. + + System.String[] + + System.String[] + + + None + + + PassThru + + If specified, cmdlet will return all disabled aliases + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Indicates what scope aliases should be disabled for. Default is 'Process' + + + Process + CurrentUser + LocalMachine + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Module + + Indicates which modules to disable aliases for. If none are specified, default is all enabled modules. + + System.String[] + + System.String[] + + + None + + + PassThru + + If specified, cmdlet will return all disabled aliases + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Indicates what scope aliases should be disabled for. Default is 'Process' + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.String + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Disable-AzureRmAlias + + Disables all AzureRm prefixes for the current PowerShell session. + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Disable-AzureRmAlias -Module Az.Accounts -Scope CurrentUser + + Disables AzureRm aliases for the Az.Accounts module for both the current process and for the current user. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/disable-azurermalias + + + + + + Disconnect-AzAccount + Disconnect + AzAccount + + Disconnects a connected Azure account and removes all credentials and contexts associated with that account. + + + + The Disconnect-AzAccount cmdlet disconnects a connected Azure account and removes all credentials and contexts (subscription and tenant information) associated with that account. After executing this cmdlet, you will need to login again using Connect-AzAccount. + + + + Disconnect-AzAccount + + ApplicationId + + ServicePrincipal id (globally unique id) + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + TenantId + + Tenant id (globally unique id) + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + + System.Management.Automation.SwitchParameter + + + False + + + + Disconnect-AzAccount + + AzureContext + + Context + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + + System.Management.Automation.SwitchParameter + + + False + + + + Disconnect-AzAccount + + ContextName + + Name of the context to log out of + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + + System.Management.Automation.SwitchParameter + + + False + + + + Disconnect-AzAccount + + InputObject + + The account object to remove + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + + System.Management.Automation.SwitchParameter + + + False + + + + Disconnect-AzAccount + + Username + + User name of the form 'user@contoso.org' + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + ApplicationId + + ServicePrincipal id (globally unique id) + + System.String + + System.String + + + None + + + AzureContext + + Context + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + ContextName + + Name of the context to log out of + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + InputObject + + The account object to remove + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + TenantId + + Tenant id (globally unique id) + + System.String + + System.String + + + None + + + Username + + User name of the form 'user@contoso.org' + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not executed. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureRmAccount + + + + + + + + + + + + + + ----------- Example 1: Logout of the current account ----------- + PS C:\> Disconnect-AzAccount + + Logs out of the Azure account associated with the current context. + + + + + + Example 2: Logout of the account associated with a particular context + PS C:\> Get-AzContext "Work" | Disconnect-AzAccount -Scope CurrentUser + + Logs out the account associated with the given context (named 'Work'). Because this uses the 'CurrentUser' scope, all credentials and contexts will be permanently deleted. + + + + + + ------------- Example 3: Log out a particular user ------------- + PS C:\> Disconnect-AzAccount -Username 'user1@contoso.org' + + Logs out the 'user1@contoso.org' user - all credentials and all contexts associated with this user will be removed. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/disconnect-azaccount + + + + + + Enable-AzContextAutosave + Enable + AzContextAutosave + + Allow the azure credential, account and subscription information to be saved and automatically loaded when you open a PowerShell window. + + + + Allow the azure credential, account and subscription information to be saved and automatically loaded when you open a PowerShell window. + + + + Enable-AzContextAutosave + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + Microsoft.Azure.Commands.Common.Authentication.ContextAutosaveSettings + + + + + + + + + + + + + + Example 1: Enable autosaving credentials for the current user + PS C:\> Enable-AzContextAutosave + + Turn on credential autosave for the current user. Whenever a powershell window is opened, your current context will be remembered without logging in. + + + + + + -------------------------- Example 2 -------------------------- + <!-- Aladdin Generated Example --> +Enable-AzContextAutosave -Scope Process + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/enable-azcontextautosave + + + + + + Enable-AzDataCollection + Enable + AzDataCollection + + Enables Azure PowerShell to collect data to improve the user experience with the Azure PowerShell cmdlets. Executing this cmdlet opts in to data collection for the current user on the current machine. Data is collected by default unless you explicitly opt out. + + + + The `Enable-AzDataCollection` cmdlet is used to opt in to data collection. Azure PowerShell automatically collects telemetry data by default. Microsoft aggregates collected data to identify patterns of usage, to identify common issues, and to improve the experience of Azure PowerShell. Microsoft Azure PowerShell doesn't collect any private or personal data. To disable data collection, you must explicitly opt out by executing `Disable-AzDataCollection`. + + + + Enable-AzDataCollection + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.Void + + + + + + + + + + + + + + --- Example 1: Enabling data collection for the current user --- + Enable-AzDataCollection + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/enable-azdatacollection + + + Disable-AzDataCollection + + + + + + + Enable-AzureRmAlias + Enable + AzureRmAlias + + Enables AzureRm prefix aliases for Az modules. + + + + Enables AzureRm prefix aliases for Az modules. If -Module is specified, only modules listed will have aliases enabled. Otherwise all AzureRm aliases are enabled. + + + + Enable-AzureRmAlias + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Module + + Indicates which modules to enable aliases for. If none are specified, default is all modules. + + System.String[] + + System.String[] + + + None + + + PassThru + + If specified, cmdlet will return all aliases enabled + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Indicates what scope aliases should be enabled for. Default is 'Local' + + + Local + Process + CurrentUser + LocalMachine + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Module + + Indicates which modules to enable aliases for. If none are specified, default is all modules. + + System.String[] + + System.String[] + + + None + + + PassThru + + If specified, cmdlet will return all aliases enabled + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Indicates what scope aliases should be enabled for. Default is 'Local' + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.String + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Enable-AzureRmAlias + + Enables all AzureRm prefixes for the current PowerShell session. + + + + + + -------------------------- Example 2 -------------------------- + PS C:\> Enable-AzureRmAlias -Module Az.Accounts -Scope CurrentUser + + Enables AzureRm aliases for the Az.Accounts module for both the current process and for the current user. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/enable-azurermalias + + + + + + Get-AzContext + Get + AzContext + + Gets the metadata used to authenticate Azure Resource Manager requests. + + + + The Get-AzContext cmdlet gets the current metadata used to authenticate Azure Resource Manager requests. This cmdlet gets the Active Directory account, Active Directory tenant, Azure subscription, and the targeted Azure environment. Azure Resource Manager cmdlets use these settings by default when making Azure Resource Manager requests. + + + + Get-AzContext + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ListAvailable + + List all available contexts in the current session. + + + System.Management.Automation.SwitchParameter + + + False + + + + Get-AzContext + + Name + + The name of the context + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ListAvailable + + List all available contexts in the current session. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Name + + The name of the context + + System.String + + System.String + + + None + + + + + + None + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + + + + + ------------ Example 1: Getting the current context ------------ + PS C:\> Connect-AzAccount +PS C:\> Get-AzContext + +Name Account SubscriptionName Environment TenantId +---- ------- ---------------- ----------- -------- +Subscription1 (xxxxxxxx-xxxx-xxxx-xxx... test@outlook.com Subscription1 AzureCloud xxxxxxxx-x... + + In this example we are logging into our account with an Azure subscription using Connect-AzAccount, and then we are getting the context of the current session by calling Get-AzContext. + + + + + + ---------- Example 2: Listing all available contexts ---------- + PS C:\> Get-AzContext -ListAvailable + +Name Account SubscriptionName Environment TenantId +---- ------- ---------------- ----------- -------- +Subscription1 (xxxxxxxx-xxxx-xxxx-xxx... test@outlook.com Subscription1 AzureCloud xxxxxxxx-x... +Subscription2 (xxxxxxxx-xxxx-xxxx-xxx... test@outlook.com Subscription2 AzureCloud xxxxxxxx-x... +Subscription3 (xxxxxxxx-xxxx-xxxx-xxx... test@outlook.com Subscription3 AzureCloud xxxxxxxx-x... + + In this example, all currently available contexts are displayed. The user may select one of these contexts using Select-AzContext. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azcontext + + + Set-AzContext + + + + + + + Get-AzContextAutosaveSetting + Get + AzContextAutosaveSetting + + Display metadata about the context autosave feature, including whether the context is automatically saved, and where saved context and credential information can be found. + + + + Display metadata about the context autosave feature, including whether the context is automatically saved, and where saved context and credential information can be found. + + + + Get-AzContextAutosaveSetting + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + + + + None + + + + + + + + + + Microsoft.Azure.Commands.Common.Authentication.ContextAutosaveSettings + + + + + + + + + + + + + + ------ Get context save metadata for the current session ------ + PS C:\> Get-AzContextAutosaveSetting + +Mode : Process +ContextDirectory : None +ContextFile : None +CacheDirectory : None +CacheFile : None +Settings : {} + + Get details about whether and where the context is saved. In the above example, the autosave feature has been disabled. + + + + + + -------- Get context save metadata for the current user -------- + PS C:\> Get-AzContextAutosaveSetting -Scope CurrentUser + +Mode : CurrentUser +ContextDirectory : C:\Users\contoso\AppData\Roaming\Windows Azure Powershell +ContextFile : AzureRmContext.json +CacheDirectory : C:\Users\contoso\AppData\Roaming\Windows Azure Powershell +CacheFile : TokenCache.dat +Settings : {} + + Get details about whether and where the context is saved by default for the current user. Note that this may be different than the settings that are active in the current session. In the above example, the autosave feature has been enabled, and data is saved to the default location. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azcontextautosavesetting + + + + + + Get-AzDefault + Get + AzDefault + + Get the defaults set by the user in the current context. + + + + The Get-AzDefault cmdlet gets the Resource Group that the user has set as default in the current context. + + + + Get-AzDefault + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ResourceGroup + + Display Default Resource Group + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ResourceGroup + + Display Default Resource Group + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.Management.Automation.SwitchParameter + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSResourceGroup + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Get-AzDefault + +Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup +Name : myResourceGroup +Properties : Microsoft.Azure.Management.Internal.Resources.Models.ResourceGroupProperties +Location : eastus +ManagedBy : +Tags : + + This command returns the current defaults if there are defaults set, or returns nothing if no default is set. + + + + + + -------------------------- Example 2 -------------------------- + PS C:\> Get-AzDefault -ResourceGroup + +Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup +Name : myResourceGroup +Properties : Microsoft.Azure.Management.Internal.Resources.Models.ResourceGroupProperties +Location : eastus +ManagedBy : +Tags : + + This command returns the current default Resource Group if there is a default set, or returns nothing if no default is set. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azdefault + + + + + + Get-AzEnvironment + Get + AzEnvironment + + Get endpoints and metadata for an instance of Azure services. + + + + The Get-AzEnvironment cmdlet gets endpoints and metadata for an instance of Azure services. + + + + Get-AzEnvironment + + Name + + Specifies the name of the Azure instance to get. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Name + + Specifies the name of the Azure instance to get. + + System.String + + System.String + + + None + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + + + + + + + + + + + + + -------- Example 1: Getting the AzureCloud environment -------- + PS C:\> Get-AzEnvironment AzureCloud + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +AzureCloud https://management.azure.com/ https://login.microsoftonline.com/ + + This example shows how to get the endpoints and metadata for the AzureCloud (default) environment. + + + + + + ------ Example 2: Getting the AzureChinaCloud environment ------ + PS C:\> Get-AzEnvironment AzureChinaCloud | Format-List + +Name : AzureChinaCloud +EnableAdfsAuthentication : False +ActiveDirectoryServiceEndpointResourceId : https://management.core.chinacloudapi.cn/ +AdTenant : +GalleryUrl : https://gallery.chinacloudapi.cn/ +ManagementPortalUrl : http://go.microsoft.com/fwlink/?LinkId=301902 +ServiceManagementUrl : https://management.core.chinacloudapi.cn/ +PublishSettingsFileUrl : http://go.microsoft.com/fwlink/?LinkID=301776 +ResourceManagerUrl : https://management.chinacloudapi.cn/ +SqlDatabaseDnsSuffix : .database.chinacloudapi.cn +StorageEndpointSuffix : core.chinacloudapi.cn +ActiveDirectoryAuthority : https://login.chinacloudapi.cn/ +GraphUrl : https://graph.chinacloudapi.cn/ +GraphEndpointResourceId : https://graph.chinacloudapi.cn/ +TrafficManagerDnsSuffix : trafficmanager.cn +AzureKeyVaultDnsSuffix : vault.azure.cn +AzureDataLakeStoreFileSystemEndpointSuffix : +AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix : +AzureKeyVaultServiceEndpointResourceId : https://vault.azure.cn + + This example shows how to get the endpoints and metadata for the AzureChinaCloud environment. + + + + + + ----- Example 3: Getting the AzureUSGovernment environment ----- + PS C:\> Get-AzEnvironment AzureUSGovernment + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +AzureUSGovernment https://management.usgovcloudapi.net/ https://login.microsoftonline.us/ + + This example shows how to get the endpoints and metadata for the AzureUSGovernment environment. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azenvironment + + + Add-AzEnvironment + + + + Remove-AzEnvironment + + + + Set-AzEnvironment + + + + + + + Get-AzProfile + Get + AzProfile + + Get the service profiles supported by installed modules. + + + + Get the service profiles supported by installed modules. + + + + Get-AzProfile + + ListAvailable + + List all service profiles supported by installed modules + + + System.Management.Automation.SwitchParameter + + + False + + + ModuleName + + The name of the module to check + + System.String[] + + System.String[] + + + None + + + + + + ListAvailable + + List all service profiles supported by installed modules + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + ModuleName + + The name of the module to check + + System.String[] + + System.String[] + + + None + + + + + + None + + + + + + + + + + Microsoft.Azure.Commands.Profile.CommonModule.PSAzureServiceProfile + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Get-AzProfile -ModuleName Az.KeyVault + +Name Description +---- ----------- +latest-2019-04-30 A snapshot of the service API versions in the Azure Global Cloud. This profile was defined in April 2019. +hybrid-2019-03-01 A snapshot of the Service API versions in AzureStack, Azure Sovereign clouds, and the Azure Global Cloud. This profile was defined in March 2019. + + Get the service profile supported by the KeyVault module + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azprofile + + + + + + Get-AzSubscription + Get + AzSubscription + + Get subscriptions that the current account can access. + + + + The Get-AzSubscription cmdlet gets the subscription ID, subscription name, and home tenant for subscriptions that the current account can access. + + + + Get-AzSubscription + + AsJob + + Run cmdlet in the background and return a Job to track progress. + + + System.Management.Automation.SwitchParameter + + + False + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + SubscriptionId + + Specifies the ID of the subscription to get. + + System.String + + System.String + + + None + + + TenantId + + Specifies the ID of the tenant that contains subscriptions to get. + + System.String + + System.String + + + None + + + + Get-AzSubscription + + AsJob + + Run cmdlet in the background and return a Job to track progress. + + + System.Management.Automation.SwitchParameter + + + False + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + SubscriptionName + + Specifies the name of the subscription to get. + + System.String + + System.String + + + None + + + TenantId + + Specifies the ID of the tenant that contains subscriptions to get. + + System.String + + System.String + + + None + + + + + + AsJob + + Run cmdlet in the background and return a Job to track progress. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + SubscriptionId + + Specifies the ID of the subscription to get. + + System.String + + System.String + + + None + + + SubscriptionName + + Specifies the name of the subscription to get. + + System.String + + System.String + + + None + + + TenantId + + Specifies the ID of the tenant that contains subscriptions to get. + + System.String + + System.String + + + None + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + + + + + + + + + + + + + ------- Example 1: Get all subscriptions in all tenants ------- + PS C:\>Get-AzSubscription + +Name Id TenantId State +---- -- -------- ----- +Subscription1 yyyy-yyyy-yyyy-yyyy aaaa-aaaa-aaaa-aaaa Enabled +Subscription2 xxxx-xxxx-xxxx-xxxx aaaa-aaaa-aaaa-aaaa Enabled +Subscription3 zzzz-zzzz-zzzz-zzzz bbbb-bbbb-bbbb-bbbb Enabled + + This command gets all subscriptions in all tenants that are authorized for the current account. + + + + + + ---- Example 2: Get all subscriptions for a specific tenant ---- + PS C:\>Get-AzSubscription -TenantId "aaaa-aaaa-aaaa-aaaa" + +Name Id TenantId State +---- -- -------- ----- +Subscription1 yyyy-yyyy-yyyy-yyyy aaaa-aaaa-aaaa-aaaa Enabled +Subscription2 xxxx-xxxx-xxxx-xxxx aaaa-aaaa-aaaa-aaaa Enabled + + List all subscriptions in the given tenant that are authorized for the current account. + + + + + + ---- Example 3: Get all subscriptions in the current tenant ---- + PS C:\>Get-AzSubscription + +Name Id TenantId State +---- -- -------- ----- +Subscription1 yyyy-yyyy-yyyy-yyyy aaaa-aaaa-aaaa-aaaa Enabled +Subscription2 xxxx-xxxx-xxxx-xxxx aaaa-aaaa-aaaa-aaaa Enabled + + This command gets all subscriptions in the current tenant that are authorized for the current user. + + + + + + Example 4: Change the current context to use a specific subscription + PS C:\>Get-AzSubscription -SubscriptionId "xxxx-xxxx-xxxx-xxxx" -TenantId "yyyy-yyyy-yyyy-yyyy" | Set-AzContext + +Name Account SubscriptionName Environment TenantId +---- ------- ---------------- ----------- -------- +Subscription1 (xxxx-xxxx-xxxx-xxxx) azureuser@micros... Subscription1 AzureCloud yyyy-yyyy-yyyy-yyyy + + This command gets the specified subscription, and then sets the current context to use it. All subsequent cmdlets in this session use the new subscription (Contoso Subscription 1) by default. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-azsubscription + + + + + + Get-AzTenant + Get + AzTenant + + Gets tenants that are authorized for the current user. + + + + The Get-AzTenant cmdlet gets tenants authorized for the current user. + + + + Get-AzTenant + + TenantId + + Specifies the ID of the tenant that this cmdlet gets. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + TenantId + + Specifies the ID of the tenant that this cmdlet gets. + + System.String + + System.String + + + None + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + + + + + + + + + + + + + ---------------- Example 1: Getting all tenants ---------------- + PS C:\> Connect-AzAccount +PS C:\> Get-AzTenant + +Id Directory +-- --------- +xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx microsoft.com +yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy microsoft.com + + This example shows how to get all of the authorized tenants of an Azure account. + + + + + + ------------- Example 2: Getting a specific tenant ------------- + PS C:\> Connect-AzAccount +PS C:\> Get-AzTenant -TenantId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + +Id Directory +-- --------- +xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx microsoft.com + + This example shows how to get a specific authorized tenant of an Azure account. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/get-aztenant + + + + + + Import-AzContext + Import + AzContext + + Loads Azure authentication information from a file. + + + + The Import-AzContext cmdlet loads authentication information from a file to set the Azure environment and context. Cmdlets that you run in the current session use this information to authenticate requests to Azure Resource Manager. + + + + Import-AzContext + + AzureContext + + {{Fill AzureContext Description}} + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Import-AzContext + + Path + + Specifies the path to context information saved by using Save-AzContext. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + AzureContext + + {{Fill AzureContext Description}} + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Path + + Specifies the path to context information saved by using Save-AzContext. + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + + + + + + + + + + + + + ----- Example 1: Importing a context from a AzureRmProfile ----- + PS C:\> Import-AzContext -AzContext (Connect-AzAccount) + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +azureuser@contoso.com Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + This example imports a context from a PSAzureProfile that is passed through to the cmdlet. + + + + + + ------- Example 2: Importing a context from a JSON file ------- + PS C:\> Import-AzContext -Path C:\test.json + +Account SubscriptionName TenantId Environment +------- ---------------- -------- ----------- +azureuser@contoso.com Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud + + This example selects a context from a JSON file that is passed through to the cmdlet. This JSON file can be created from Save-AzContext. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/import-azcontext + + + + + + Register-AzModule + Register + AzModule + + FOR INTERNAL USE ONLY - Provide Runtime Support for AutoRest Generated cmdlets + + + + FOR INTERNAL USE ONLY - Provide Runtime Support for AutoRest Generated cmdlets + + + + Register-AzModule + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.Object + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Register-AzModule + + Used Internally by AutoRest-generated cmdlets + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/register-azmodule + + + + + + Remove-AzContext + Remove + AzContext + + Remove a context from the set of available contexts + + + + Remove an azure context from the set of contexts + + + + Remove-AzContext + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Remove context even if it is the default + + + System.Management.Automation.SwitchParameter + + + False + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + PassThru + + Return the removed context + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Remove-AzContext + + Name + + The name of the context + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Remove context even if it is the default + + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + Return the removed context + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Remove context even if it is the default + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + Name + + The name of the context + + System.String + + System.String + + + None + + + PassThru + + Return the removed context + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Remove-AzContext -Name Default + + Remove the context named default + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/remove-azcontext + + + + + + Remove-AzEnvironment + Remove + AzEnvironment + + Removes endpoints and metadata for connecting to a given Azure instance. + + + + The Remove-AzEnvironment cmdlet removes endpoints and metadata information for connecting to a given Azure instance. + + + + Remove-AzEnvironment + + Name + + Specifies the name of the environment to remove. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Name + + Specifies the name of the environment to remove. + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + + + + + + + + + + + + + ----- Example 1: Creating and removing a test environment ----- + PS C:\> Add-AzEnvironment -Name TestEnvironment ` + -ActiveDirectoryEndpoint TestADEndpoint ` + -ActiveDirectoryServiceEndpointResourceId TestADApplicationId ` + -ResourceManagerEndpoint TestRMEndpoint ` + -GalleryEndpoint TestGalleryEndpoint ` + -GraphEndpoint TestGraphEndpoint + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +TestEnvironment TestRMEndpoint TestADEndpoint/ + +PS C:\> Remove-AzEnvironment -Name TestEnvironment + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +TestEnvironment TestRMEndpoint TestADEndpoint/ + + This example shows how to create an environment using Add-AzEnvironment, and then how to delete the environment using Remove-AzEnvironment. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/remove-azenvironment + + + Add-AzEnvironment + + + + Get-AzEnvironment + + + + Set-AzEnvironment + + + + + + + Rename-AzContext + Rename + AzContext + + Rename an Azure context. By default contexts are named by user account and subscription. + + + + Rename an Azure context. By default contexts are named by user account and subscription. + + + + Rename-AzContext + + TargetName + + The new name of the context + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Rename the context even if the target context already exists + + + System.Management.Automation.SwitchParameter + + + False + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + PassThru + + Return the renamed context. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Rename-AzContext + + SourceName + + The name of the context + + System.String + + System.String + + + None + + + TargetName + + The new name of the context + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Rename the context even if the target context already exists + + + System.Management.Automation.SwitchParameter + + + False + + + PassThru + + Return the renamed context. + + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Rename the context even if the target context already exists + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + PassThru + + Return the renamed context. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + SourceName + + The name of the context + + System.String + + System.String + + + None + + + TargetName + + The new name of the context + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + + + + + ------ Example 1: Rename a context using named parameters ------ + PS C:\> Rename-AzContext -SourceName "[user1@contoso.org; 12345-6789-2345-3567890]" -TargetName "Work" + + Rename the context for 'user1@contoso.org' with subscription '12345-6789-2345-3567890' to 'Work'. After this command, you will be able to target the context using 'Select-AzContext Work'. Note that you can tab through the values for 'SourceName' using tab completion. + + + + + + --- Example 2: Rename a context using positional parameters --- + PS C:\> Rename-AzContext "My context" "Work" + + Rename the context named "My context" to "Work". After this command, you will be able to target the context using Select-AzContext Work + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/rename-azcontext + + + + + + Resolve-AzError + Resolve + AzError + + Display detailed information about PowerShell errors, with extended details for Azure PowerShell errors. + + + + Resolves and displays detailed information about errors in the current PowerShell session, including where the error occurred in script, stack trace, and all inner and aggregate exceptions. For Azure PowerShell errors provides additional detail in debugging service issues, including complete detail about the request and server response that caused the error. + + + + Resolve-AzError + + Error + + One or more error records to resolve. If no parameters are specified, all errors in the session are resolved. + + System.Management.Automation.ErrorRecord[] + + System.Management.Automation.ErrorRecord[] + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + Resolve-AzError + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Last + + Resolve only the last error that occurred in the session. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Error + + One or more error records to resolve. If no parameters are specified, all errors in the session are resolved. + + System.Management.Automation.ErrorRecord[] + + System.Management.Automation.ErrorRecord[] + + + None + + + Last + + Resolve only the last error that occurred in the session. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.Management.Automation.ErrorRecord[] + + + + + + + + + + Microsoft.Azure.Commands.Profile.Errors.AzureErrorRecord + + + + + + + + Microsoft.Azure.Commands.Profile.Errors.AzureExceptionRecord + + + + + + + + Microsoft.Azure.Commands.Profile.Errors.AzureRestExceptionRecord + + + + + + + + + + + + + + -------------- Example 1: Resolve the Last Error -------------- + PS C:\> Resolve-AzError -Last + + HistoryId: 3 + + +Message : Run Connect-AzAccount to login. +StackTrace : at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.get_DefaultContext() in AzureRmCmdlet.cs:line 85 + at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.LogCmdletStartInvocationInfo() in AzureRmCmdlet.cs:line 269 + at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.BeginProcessing() inAzurePSCmdlet.cs:line 299 + at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.BeginProcessing() in AzureRmCmdlet.cs:line 320 + at Microsoft.Azure.Commands.Profile.GetAzureRMSubscriptionCommand.BeginProcessing() in GetAzureRMSubscription.cs:line 49 + at System.Management.Automation.Cmdlet.DoBeginProcessing() + at System.Management.Automation.CommandProcessorBase.DoBegin() +Exception : System.Management.Automation.PSInvalidOperationException +InvocationInfo : {Get-AzSubscription} +Line : Get-AzSubscription +Position : At line:1 char:1 + + Get-AzSubscription + + ~~~~~~~~~~~~~~~~~~~~~~~ +HistoryId : 3 + + Get details of the last error. + + + + + + --------- Example 2: Resolve all Errors in the Session --------- + PS C:\> Resolve-AzError + + + HistoryId: 8 + + +RequestId : b61309e8-09c9-4f0d-ba56-08a6b28c731d +Message : Resource group 'contoso' could not be found. +ServerMessage : ResourceGroupNotFound: Resource group 'contoso' could not be found. + (System.Collections.Generic.List`1[Microsoft.Rest.Azure.CloudError]) +ServerResponse : {NotFound} +RequestMessage : {GET https://management.azure.com/subscriptions/00977cdb-163f-435f-9c32-39ec8ae61f4d/resourceGroups/co + ntoso/providers/Microsoft.Storage/storageAccounts/contoso?api-version=2016-12-01} +InvocationInfo : {Get-AzStorageAccount} +Line : Get-AzStorageAccount -ResourceGroupName contoso -Name contoso +Position : At line:1 char:1 + + Get-AzStorageAccount -ResourceGroupName contoso -Name contoso + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +StackTrace : at Microsoft.Azure.Management.Storage.StorageAccountsOperations.<GetPropertiesWithHttpMessagesAsync + >d__8.MoveNext() + --- End of stack trace from previous location where exception was thrown --- + at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + at Microsoft.Azure.Management.Storage.StorageAccountsOperationsExtensions.<GetPropertiesAsync>d__7. + MoveNext() + --- End of stack trace from previous location where exception was thrown --- + at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + at Microsoft.Azure.Management.Storage.StorageAccountsOperationsExtensions.GetProperties(IStorageAcc + ountsOperations operations, String resourceGroupName, String accountName) + at Microsoft.Azure.Commands.Management.Storage.GetAzureStorageAccountCommand.ExecuteCmdlet() in C:\ + zd\azure-powershell\src\ResourceManager\Storage\Commands.Management.Storage\StorageAccount\GetAzureSto + rageAccount.cs:line 70 + at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord() in + C:\zd\azure-powershell\src\Common\Commands.Common\AzurePSCmdlet.cs:line 642 +HistoryId : 8 + + + HistoryId: 5 + + +Message : Run Connect-AzAccount to login. +StackTrace : at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.get_DefaultContext() in C:\zd\azur + e-powershell\src\ResourceManager\Common\Commands.ResourceManager.Common\AzureRmCmdlet.cs:line 85 + at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.LogCmdletStartInvocationInfo() in + C:\zd\azure-powershell\src\ResourceManager\Common\Commands.ResourceManager.Common\AzureRmCmdlet.cs:lin + e 269 + at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.BeginProcessing() in + C:\zd\azure-powershell\src\Common\Commands.Common\AzurePSCmdlet.cs:line 299 + at Microsoft.Azure.Commands.ResourceManager.Common.AzureRMCmdlet.BeginProcessing() in C:\zd\azure-p + owershell\src\ResourceManager\Common\Commands.ResourceManager.Common\AzureRmCmdlet.cs:line 320 + at Microsoft.Azure.Commands.Profile.GetAzureRMSubscriptionCommand.BeginProcessing() in C:\zd\azure- + powershell\src\ResourceManager\Profile\Commands.Profile\Subscription\GetAzureRMSubscription.cs:line 49 + at System.Management.Automation.Cmdlet.DoBeginProcessing() + at System.Management.Automation.CommandProcessorBase.DoBegin() +Exception : System.Management.Automation.PSInvalidOperationException +InvocationInfo : {Get-AzSubscription} +Line : Get-AzSubscription +Position : At line:1 char:1 + + Get-AzSubscription + + ~~~~~~~~~~~~~~~~~~~~~~~ +HistoryId : 5 + + Get details of all errors that have occurred in the current session. + + + + + + ------------- Example 3: Resolve a Specific Error ------------- + PS C:\> Resolve-AzError $Error[0] + + + HistoryId: 8 + + +RequestId : b61309e8-09c9-4f0d-ba56-08a6b28c731d +Message : Resource group 'contoso' could not be found. +ServerMessage : ResourceGroupNotFound: Resource group 'contoso' could not be found. + (System.Collections.Generic.List`1[Microsoft.Rest.Azure.CloudError]) +ServerResponse : {NotFound} +RequestMessage : {GET https://management.azure.com/subscriptions/00977cdb-163f-435f-9c32-39ec8ae61f4d/resourceGroups/co + ntoso/providers/Microsoft.Storage/storageAccounts/contoso?api-version=2016-12-01} +InvocationInfo : {Get-AzStorageAccount} +Line : Get-AzStorageAccount -ResourceGroupName contoso -Name contoso +Position : At line:1 char:1 + + Get-AzStorageAccount -ResourceGroupName contoso -Name contoso + + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +StackTrace : at Microsoft.Azure.Management.Storage.StorageAccountsOperations.<GetPropertiesWithHttpMessagesAsync + >d__8.MoveNext() + --- End of stack trace from previous location where exception was thrown --- + at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + at Microsoft.Azure.Management.Storage.StorageAccountsOperationsExtensions.<GetPropertiesAsync>d__7. + MoveNext() + --- End of stack trace from previous location where exception was thrown --- + at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) + at Microsoft.Azure.Management.Storage.StorageAccountsOperationsExtensions.GetProperties(IStorageAcc + ountsOperations operations, String resourceGroupName, String accountName) + at Microsoft.Azure.Commands.Management.Storage.GetAzureStorageAccountCommand.ExecuteCmdlet() in C:\ + zd\azure-powershell\src\ResourceManager\Storage\Commands.Management.Storage\StorageAccount\GetAzureSto + rageAccount.cs:line 70 + at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord() in + C:\zd\azure-powershell\src\Common\Commands.Common\AzurePSCmdlet.cs:line 642 +HistoryId : 8 + + Get details of the specified error. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/resolve-azerror + + + + + + Save-AzContext + Save + AzContext + + Saves the current authentication information for use in other PowerShell sessions. + + + + The Save-AzContext cmdlet saves the current authentication information for use in other PowerShell sessions. + + + + Save-AzContext + + Profile + + Specifies the Azure context from which this cmdlet reads. If you do not specify a context, this cmdlet reads from the local default context. + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + None + + + Path + + Specifies the path of the file to which to save authentication information. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Overwrite the given file if it exists + + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Overwrite the given file if it exists + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Path + + Specifies the path of the file to which to save authentication information. + + System.String + + System.String + + + None + + + Profile + + Specifies the Azure context from which this cmdlet reads. If you do not specify a context, this cmdlet reads from the local default context. + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Common.Authentication.Models.AzureRmProfile + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureProfile + + + + + + + + + + + + + + ------- Example 1: Saving the current session's context ------- + PS C:\> Connect-AzAccount +PS C:\> Save-AzContext -Path C:\test.json + + This example saves the current session's Azure context to the JSON file provided. + + + + + + -------------- Example 2: Saving a given context -------------- + PS C:\> Save-AzContext -Profile (Connect-AzAccount) -Path C:\test.json + + This example saves the Azure context that is passed through to the cmdlet to the JSON file provided. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/save-azcontext + + + + + + Select-AzContext + Select + AzContext + + Select a subscription and account to target in Azure PowerShell cmdlets + + + + Select a subscription to target (or account or tenant) in Azure PowerShell cmdlets. After this cmdlet, future cmdlets will target the selected context. + + + + Select-AzContext + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Select-AzContext + + Name + + The name of the context + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, tenant and subscription used for communication with azure + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + InputObject + + A context object, normally passed through the pipeline. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + Name + + The name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + + + + + -------------- Example 1: Target a named context -------------- + PS C:\> Select-AzContext "Work" + +Name Account SubscriptionName Environment TenantId +---- ------- ---------------- ----------- -------- +Work test@outlook.com Subscription1 AzureCloud xxxxxxxx-x... + + Target future Azure PowerShell cmdlets at the account, tenant, and subscription in the 'Work' context. + + + + + + -------------------------- Example 2 -------------------------- + <!-- Aladdin Generated Example --> +Select-AzContext -Name TestEnvironment -Scope Process + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/select-azcontext + + + + + + Select-AzProfile + Select + AzProfile + + For modules that support multiple service profiles - load the cmdlets corresponding with the given service profile. + + + + For modules that support multiple service profiles - load the cmdlets corresponding with the given service profile. + + + + Select-AzProfile + + Name + + The name of the profile to select + + System.String + + System.String + + + None + + + PassThru + + When present, forces the cmdlet to return a value on successful execution + + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + Name + + The name of the profile to select + + System.String + + System.String + + + None + + + PassThru + + When present, forces the cmdlet to return a value on successful execution + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.Object + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Select-AzProfile hybrid-2019-03 + + Load cmdlets for the AzureStack profile from March 2019 + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/select-azprofile + + + + + + Send-Feedback + Send + Feedback + + Sends feedback to the Azure PowerShell team via a set of guided prompts. + + + + The Send-Feedback cmdlet sends feedback to the Azure PowerShell team. + + + + Send-Feedback + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + + + + None + + + + + + + + + + System.Void + + + + + + + + + + + + + + -------------------------- Example 1: -------------------------- + PS C:\> Send-Feedback + +With zero (0) being the least and ten (10) being the most, how likely are you to recommend Azure PowerShell to a friend or colleague? + +10 + +What does Azure PowerShell do well? + +Response. + +Upon what could Azure PowerShell improve? + +Response. + +Please enter your email if you are interested in providing follow up information: + +your@email.com + + + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/send-feedback + + + + + + Set-AzContext + Set + AzContext + + Sets the tenant, subscription, and environment for cmdlets to use in the current session. + + + + The Set-AzContext cmdlet sets authentication information for cmdlets that you run in the current session. The context includes tenant, subscription, and environment information. + + + + Set-AzContext + + Context + + Specifies the context for the current session. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Set-AzContext + + Subscription + + The name or id of the subscription that the context should be set to. This parameter has aliases to -SubscriptionName and -SubscriptionId, so, for clarity, either of these can be used instead of -Subscription when specifying name and id, respectively. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Tenant + + Tenant name or ID + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Set-AzContext + + SubscriptionObject + + A subscription object + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Set-AzContext + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Tenant + + Tenant name or ID + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Set-AzContext + + TenantObject + + A Tenant Object + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + Context + + Specifies the context for the current session. + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + None + + + DefaultProfile + + The credentials, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + ExtendedProperty + + Additional context properties + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + System.Collections.Generic.IDictionary`2[System.String,System.String] + + + None + + + Force + + Overwrite the existing context with the same name, if any. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Name + + Name of the context + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Subscription + + The name or id of the subscription that the context should be set to. This parameter has aliases to -SubscriptionName and -SubscriptionId, so, for clarity, either of these can be used instead of -Subscription when specifying name and id, respectively. + + System.String + + System.String + + + None + + + SubscriptionObject + + A subscription object + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + + None + + + Tenant + + Tenant name or ID + + System.String + + System.String + + + None + + + TenantObject + + A Tenant Object + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureTenant + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.Core.PSAzureContext + + + + + + + + + + + + + + ----------- Example 1: Set the subscription context ----------- + PS C:\>Set-AzContext -SubscriptionId "xxxx-xxxx-xxxx-xxxx" + +Name Account SubscriptionName Environment TenantId +---- ------- ---------------- ----------- -------- +Work test@outlook.com Subscription1 AzureCloud xxxxxxxx-x... + + This command sets the context to use the specified subscription. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/set-azcontext + + + Get-AzContext + + + + + + + Set-AzDefault + Set + AzDefault + + Sets a default in the current context + + + + The Set-AzDefault cmdlet adds or changes the defaults in the current context. + + + + Set-AzDefault + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Create a new resource group if specified default does not exist + + + System.Management.Automation.SwitchParameter + + + False + + + ResourceGroupName + + Name of the resource group being set as default + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Force + + Create a new resource group if specified default does not exist + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + ResourceGroupName + + Name of the resource group being set as default + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSResourceGroup + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Set-AzDefault -ResourceGroupName myResourceGroup + +Id : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup +Name : myResourceGroup +Properties : Microsoft.Azure.Management.Internal.Resources.Models.ResourceGroupProperties +Location : eastus +ManagedBy : +Tags : + + This command sets the default resource group to the resource group specified by the user. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/set-azdefault + + + + + + Set-AzEnvironment + Set + AzEnvironment + + Sets properties for an Azure environment. + + + + The Set-AzEnvironment cmdlet sets endpoints and metadata for connecting to an instance of Azure. + + + + Set-AzEnvironment + + Name + + Specifies the name of the environment to modify. + + System.String + + System.String + + + None + + + PublishSettingsFileUrl + + Specifies the URL from which .publishsettings files can be downloaded. + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + TrafficManagerDnsSuffix + + Specifies the domain-name suffix for Azure Traffic Manager services. + + System.String + + System.String + + + None + + + SqlDatabaseDnsSuffix + + Specifies the domain-name suffix for Azure SQL Database servers. + + System.String + + System.String + + + None + + + AzureDataLakeStoreFileSystemEndpointSuffix + + Dns Suffix of Azure Data Lake Store FileSystem. Example: azuredatalake.net + + System.String + + System.String + + + None + + + AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix + + Dns Suffix of Azure Data Lake Analytics job and catalog services + + System.String + + System.String + + + None + + + EnableAdfsAuthentication + + Indicates that Active Directory Federation Services (ADFS) on-premise authentication is allowed. + + + System.Management.Automation.SwitchParameter + + + False + + + AdTenant + + Specifies the default Active Directory tenant. + + System.String + + System.String + + + None + + + GraphAudience + + The audience for tokens authenticating with the AD Graph Endpoint. + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + ServiceEndpoint + + Specifies the endpoint for Service Management (RDFE) requests. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + ManagementPortalUrl + + Specifies the URL for the Management Portal. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + ActiveDirectoryEndpoint + + Specifies the base authority for Azure Active Directory authentication. + + System.String + + System.String + + + None + + + ResourceManagerEndpoint + + Specifies the URL for Azure Resource Manager requests. + + System.String + + System.String + + + None + + + GalleryEndpoint + + Specifies the endpoint for the Azure Resource Manager gallery of deployment templates. + + System.String + + System.String + + + None + + + ActiveDirectoryServiceEndpointResourceId + + Specifies the audience for tokens that authenticate requests to Azure Resource Manager or Service Management (RDFE) endpoints. + + System.String + + System.String + + + None + + + GraphEndpoint + + Specifies the URL for Graph (Active Directory metadata) requests. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + Set-AzEnvironment + + Name + + Specifies the name of the environment to modify. + + System.String + + System.String + + + None + + + ARMEndpoint + + The Azure Resource Manager endpoint. + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + + Process + CurrentUser + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + ActiveDirectoryEndpoint + + Specifies the base authority for Azure Active Directory authentication. + + System.String + + System.String + + + None + + + ActiveDirectoryServiceEndpointResourceId + + Specifies the audience for tokens that authenticate requests to Azure Resource Manager or Service Management (RDFE) endpoints. + + System.String + + System.String + + + None + + + AdTenant + + Specifies the default Active Directory tenant. + + System.String + + System.String + + + None + + + ARMEndpoint + + The Azure Resource Manager endpoint. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointResourceId + + The resource identifier of the Azure Analysis Services resource. + + System.String + + System.String + + + None + + + AzureAnalysisServicesEndpointSuffix + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointResourceId + + The The resource identifier of the Azure Attestation service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureAttestationServiceEndpointSuffix + + Dns suffix of Azure Attestation service. + + System.String + + System.String + + + None + + + AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix + + Dns Suffix of Azure Data Lake Analytics job and catalog services + + System.String + + System.String + + + None + + + AzureDataLakeStoreFileSystemEndpointSuffix + + Dns Suffix of Azure Data Lake Store FileSystem. Example: azuredatalake.net + + System.String + + System.String + + + None + + + AzureKeyVaultDnsSuffix + + Dns suffix of Azure Key Vault service. Example is vault-int.azure-int.net + + System.String + + System.String + + + None + + + AzureKeyVaultServiceEndpointResourceId + + Resource identifier of Azure Key Vault data service that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpoint + + The endpoint to use when communicating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureOperationalInsightsEndpointResourceId + + The audience for tokens authenticating with the Azure Log Analytics API. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointResourceId + + The The resource identifier of the Azure Synapse Analytics that is the recipient of the requested token. + + System.String + + System.String + + + None + + + AzureSynapseAnalyticsEndpointSuffix + + Dns suffix of Azure Synapse Analytics. + + System.String + + System.String + + + None + + + BatchEndpointResourceId + + The resource identifier of the Azure Batch service that is the recipient of the requested token + + System.String + + System.String + + + None + + + DataLakeAudience + + The audience for tokens authenticating with the AD Data Lake services Endpoint. + + System.String + + System.String + + + None + + + DefaultProfile + + The credentials, account, tenant and subscription used for communication with azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + EnableAdfsAuthentication + + Indicates that Active Directory Federation Services (ADFS) on-premise authentication is allowed. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + GalleryEndpoint + + Specifies the endpoint for the Azure Resource Manager gallery of deployment templates. + + System.String + + System.String + + + None + + + GraphAudience + + The audience for tokens authenticating with the AD Graph Endpoint. + + System.String + + System.String + + + None + + + GraphEndpoint + + Specifies the URL for Graph (Active Directory metadata) requests. + + System.String + + System.String + + + None + + + ManagementPortalUrl + + Specifies the URL for the Management Portal. + + System.String + + System.String + + + None + + + Name + + Specifies the name of the environment to modify. + + System.String + + System.String + + + None + + + PublishSettingsFileUrl + + Specifies the URL from which .publishsettings files can be downloaded. + + System.String + + System.String + + + None + + + ResourceManagerEndpoint + + Specifies the URL for Azure Resource Manager requests. + + System.String + + System.String + + + None + + + Scope + + Determines the scope of context changes, for example, whether changes apply only to the current process, or to all sessions started by this user. + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + Microsoft.Azure.Commands.Profile.Common.ContextModificationScope + + + None + + + ServiceEndpoint + + Specifies the endpoint for Service Management (RDFE) requests. + + System.String + + System.String + + + None + + + SqlDatabaseDnsSuffix + + Specifies the domain-name suffix for Azure SQL Database servers. + + System.String + + System.String + + + None + + + StorageEndpoint + + Specifies the endpoint for storage (blob, table, queue, and file) access. + + System.String + + System.String + + + None + + + TrafficManagerDnsSuffix + + Specifies the domain-name suffix for Azure Traffic Manager services. + + System.String + + System.String + + + None + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String + + + + + + + + System.Management.Automation.SwitchParameter + + + + + + + + + + Microsoft.Azure.Commands.Profile.Models.PSAzureEnvironment + + + + + + + + + + + + + + ----- Example 1: Creating and modifying a new environment ----- + PS C:\> Add-AzEnvironment -Name TestEnvironment ` + -ActiveDirectoryEndpoint TestADEndpoint ` + -ActiveDirectoryServiceEndpointResourceId TestADApplicationId ` + -ResourceManagerEndpoint TestRMEndpoint ` + -GalleryEndpoint TestGalleryEndpoint ` + -GraphEndpoint TestGraphEndpoint + +Name Resource Manager Url ActiveDirectory Authority +---- -------------------- ------------------------- +TestEnvironment TestRMEndpoint TestADEndpoint/ + +PS C:\> Set-AzEnvironment -Name TestEnvironment + -ActiveDirectoryEndpoint NewTestADEndpoint + -GraphEndpoint NewTestGraphEndpoint | Format-List + +Name : TestEnvironment +EnableAdfsAuthentication : False +ActiveDirectoryServiceEndpointResourceId : TestADApplicationId +AdTenant : +GalleryUrl : TestGalleryEndpoint +ManagementPortalUrl : +ServiceManagementUrl : +PublishSettingsFileUrl : +ResourceManagerUrl : TestRMEndpoint +SqlDatabaseDnsSuffix : +StorageEndpointSuffix : +ActiveDirectoryAuthority : NewTestADEndpoint +GraphUrl : NewTestGraphEndpoint +GraphEndpointResourceId : +TrafficManagerDnsSuffix : +AzureKeyVaultDnsSuffix : +AzureDataLakeStoreFileSystemEndpointSuffix : +AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix : +AzureKeyVaultServiceEndpointResourceId : +BatchEndpointResourceId : +AzureOperationalInsightsEndpoint : +AzureOperationalInsightsEndpointResourceId : +AzureAttestationServiceEndpointSuffix : +AzureAttestationServiceEndpointResourceId : +AzureSynapseAnalyticsEndpointSuffix : +AzureSynapseAnalyticsEndpointResourceId : + + In this example we are creating a new Azure environment with sample endpoints using Add-AzEnvironment, and then we are changing the value of the ActiveDirectoryEndpoint and GraphEndpoint attributes of the created environment using the cmdlet Set-AzEnvironment. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/set-azenvironment + + + Add-AzEnvironment + + + + Get-AzEnvironment + + + + Remove-AzEnvironment + + + + + + + Uninstall-AzureRm + Uninstall + AzureRm + + Removes all AzureRm modules from a machine. + + + + Removes all AzureRm modules from a machine. + + + + Uninstall-AzureRm + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + PassThru + + Return list of Modules removed if specified. + + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + + System.Management.Automation.SwitchParameter + + + False + + + + + + DefaultProfile + + The credentials, account, tenant, and subscription used for communication with Azure. + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer + + + None + + + PassThru + + Return list of Modules removed if specified. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Confirm + + Prompts you for confirmation before running the cmdlet. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + WhatIf + + Shows what would happen if the cmdlet runs. The cmdlet is not run. + + System.Management.Automation.SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + None + + + + + + + + + + System.String + + + + + + + + + + + + + + -------------------------- Example 1 -------------------------- + PS C:\> Uninstall-AzureRm + + Running this command will remove all AzureRm modules from the machine for the version of PowerShell in which the cmdlet is run. + + + + + + + + Online Version: + https://docs.microsoft.com/en-us/powershell/module/az.accounts/uninstall-azurerm + + + + \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Common.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Common.dll new file mode 100644 index 0000000000000000000000000000000000000000..2df8d994f8f6d72273c95e32425bd1995d54dbb7 GIT binary patch literal 245624 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�fH8kt`wvahPg#{ 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 MqiymSg+UYXFKUmOivR!s literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Storage.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Storage.dll new file mode 100644 index 0000000000000000000000000000000000000000..b36dd7d8d93eb95a1825df9e9a2f18b114810caa GIT binary patch literal 19320 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

    -$HGIUk^ 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.dll new file mode 100644 index 0000000000000000000000000000000000000000..70c5ed6806c621bab9cb23092ee5c2a15507290f GIT binary patch literal 784496 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�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≫Zn-u5hbIohnjyer3n!(tuwXtqw>bzDs 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 _ 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

    -YkOxx# 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

    H;Oqm`#xdum); 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�#^Zj03zd``IzuJV(sbnCI9{Fd;*jVCFg0BF$?vO&T`W%`tXuCs7Ax zR&G1Vu5Bu1wo=h|?5Wr&Q?b#W3YH;KLBeN_qad4te8TgsG=S!j!n`yupu80ntf8Qc zf_Er5fMDtk3fRg+Dl(HsoccuwEn#fVHBiyGu|8T!PgtX*&Re6zf%RYo-BljQHs>IC z$!OOdQ-IVRQ-ED}gbYz@1xU?U&L~;QR;!mbR$`@PpOTdp(rt`L%L=>N*NB|T6T))M zt~QmjOhRByL{M6T^n|%Yr5OmUq#`udNtK1sDotu(+FCiLT`-@MDMH5LKtkrmQg;L} z<1T?s6DZGE1y(niG7@pCTNOo|?29-7mDP=cHWcs_kd7+dN5K(EB&-+)Qq@+PUDhEK zu$n0p8%aSr1tdpS5-TfBYO{$AcLSBTbq-*q!YTokY!Z2c2(73l>eLi@Dw;Ur94UOZ z^i8pw9mbi`V3`6?>m@Qsy-f{JHo%1gpTI!QK{HU3?CErpEETj!apflq+$PD zwGNc);HGt?r`o|?>%<~z)aEqx-LzAUrUBYH{Mm2m2yQdm(MxC8_<@ zwe11ITGogIaguQ)kg2qfnpKrup?uTIWh$cdMc*Xk6>58;FV>ktrU&9hLe!OW)D*#r z!)U0$H}3%An|FWK&EmJ8VrJAMY60NLm5hMlfN5~8;u&{ zK{uLeC6E#pDMEx=!7jU0U@1Ll&kZO&)Sg-w_JsJTeY9?JoDF=sCai{5AlG;oMy zxRzGvz6qj(EyV$e5Gl>@*VAIx0Up@_f!$q8Dv;3B&^n4SfNKaiVP>)hSYL$%GQ9*^ zF)EY`fGb7~NG^&fE{e6B7*HzYMJT0x4;7)AL?jt6s>L4A{)RA0ycLro513s~p!&Ru z^%%^$!IZS|8XoAmKd)kAP$`3<)$%IFgQ|1UjmEqK>!?tGCN1H`V}+^_$UG3hJ17uT z&S$N(;2p3e4W(QV_mo0ttRb&bG)6-wG(`QVK&f3GYor;kQZ!;;nH4|-ep(nCpk8FT zz3r>a1lR2|No}-YY6BsV-xlTzJ+P%!6U;)o#hVrvm3QqrqHJN8g_$9>FF{Qlpd^

    RF{eI=gCp`63&yO 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 aok~A<-HE?W^)_`9L%-_>s-#m5X#WSf38Nzb literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Runtime.CompilerServices.Unsafe.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 0000000000000000000000000000000000000000..be64036f12fe7cba2ad12805e011cea81b2320f8 GIT binary patch literal 18808 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�Q`Ssy68Q3pJ*Q4?78tE6iEZ%EU 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PostImportScripts/LoadAuthenticators.ps1 b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PostImportScripts/LoadAuthenticators.ps1 new file mode 100644 index 000000000000..218322e074d6 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PostImportScripts/LoadAuthenticators.ps1 @@ -0,0 +1,197 @@ +if ($PSEdition -eq 'Desktop') { + try { + [Microsoft.Azure.PowerShell.Authenticators.DesktopAuthenticatorBuilder]::Apply([Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance) + } catch {} +} +# SIG # Begin signature block +# MIIjhgYJKoZIhvcNAQcCoIIjdzCCI3MCAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD/helSA7zmokTO +# voMQIFn0NOno2ACkcCODe3RV4cMkvKCCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWzCCFVcCAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgh4BQ586h +# Tqk36MSJKedOnw3lSOJxHG25rKnVeFjGH5owQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQBGVBuZ+EBbhPnuVojalkYYpGpB1qSRp4/IGlsMU1v7 +# iVZ+ADqhB0+Pzh1toFZH2QH/deDcOxsXiCHbb+PzW4kTMUNXbFJxTR+dFPpKKGod +# /bo1Jg1HaQTWzZ/0Xk1M8WgZfrcLusIjhg+NqLPvf8KxYubxWx2zPTE5fjzhAl1w +# r8M42a3ue4v56nkcWIyFJQqiQ52aFZNu3W3ZpKCjVfqWBUmPLOEyPZpRfUB/VVUP +# 3vIppRzvZ9+L78xv7IVMg7DTIbFAPRrRiPbM+3DaJAsCfPSr8G7FFrgYKDyRCI8e +# ghhJduoWCiHnLiOwa0ffzsBcttwPI8JEno//2NBJRbwQoYIS5TCCEuEGCisGAQQB +# gjcDAwExghLRMIISzQYJKoZIhvcNAQcCoIISvjCCEroCAQMxDzANBglghkgBZQME +# AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEIEjXCGTsuqTyuQmfXh1Z5hZBYwm/SLi3WPMMwsNa +# qnaQAgZeznA4GvIYEzIwMjAwNTI4MDcxMzI3LjY4N1owBIACAfSggdCkgc0wgcox +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJTAjBgNVBAsTHE1p +# Y3Jvc29mdCBBbWVyaWNhIE9wZXJhdGlvbnMxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg +# RVNOOjNFN0EtRTM1OS1BMjVEMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt +# cCBTZXJ2aWNloIIOPDCCBPEwggPZoAMCAQICEzMAAAEgGjnb2WufrfIAAAAAASAw +# DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN +# MTkxMTEzMjE0MDQyWhcNMjEwMjExMjE0MDQyWjCByjELMAkGA1UEBhMCVVMxEzAR +# BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p +# Y3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWljcm9zb2Z0IEFtZXJpY2Eg +# T3BlcmF0aW9uczEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046M0U3QS1FMzU5LUEy +# NUQxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0G +# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1BOuDmpgS5mLJDPUQaEcVyH5bHBLc +# 4Lvq5gGHF5J1yPhhbg8NSErV0fP+N5CQwe4KTLU/BROOpHlO/BV1UGOs+BavEPGR +# iVYdhAqKmzWU+TWbAOVxkrnpa/FJ6A5Q5cvINSiOabyOfHe2dMFCQPlggBzqC3x9 +# lnnJkUxSpetfTcj6FVCwxYVPk55zz4O4UpmeiHDiWEBpC9r64VHZZOSz89Z7ML1l +# penM2r8+WnabZLPoU2Y7p9QrPzQH7gvQiu/zgcYYMqmVIlfFTPS1iOvZbAqk1U6B +# NRgnOKirD+0+8yujM4CY/0DlZDDlLfU7Vg8ojsGg7peVh+MnYDwlyKGxAgMBAAGj +# ggEbMIIBFzAdBgNVHQ4EFgQUmdk2BLDfR8UfnN3pLGUCcaciVc8wHwYDVR0jBBgw +# FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov +# L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB +# XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx +# MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN +# BgkqhkiG9w0BAQsFAAOCAQEAYulQdnFLE5FCLMEUPpBNSy+OCJwmY7ihAF4Jye0S +# Q8fDJ0CYhsYU/uHUl8oTTuX5JQONX6QnKSU/+/0XuezSFtuYsN+uVrvGIciGXCKP +# uPtgFjFJBSW5y4xxurfzAuPO12wGJdVD4J+0ihF5Wr+RNUbX9MPiU+0qsIKDPs2p +# A3KNdXCP9m4WLi/+Fb0KMGwoX6XtDCvBHVw2qXbqcItlh4JfM9vLfjCgwS6zbIt7 +# igBKOLXRWaOqpeIfqsBHVitPN5RsneeXPqHpBOT+wCsm7lkqDAOS98RDWyJe8hZA +# geeXLHF7gL/lBgQbzScWYx0tg/4+hlPijywAAe0SBMDkmDCCBnEwggRZoAMCAQIC +# CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp +# ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx +# NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG +# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3 +# DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF +# ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD +# DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx +# z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1 +# rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc +# sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB +# 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF +# bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +# EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD +# VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv +# cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB +# BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j +# ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB +# kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv +# c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe +# MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA +# LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx +# vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS +# inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1 +# L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO +# M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4 +# pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45 +# V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x +# 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe +# gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn +# QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp +# 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT +# X4/edIhJEqGCAs4wggI3AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzETMBEG +# A1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj +# cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNyb3NvZnQgQW1lcmljYSBP +# cGVyYXRpb25zMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjozRTdBLUUzNTktQTI1 +# RDElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG +# BSsOAwIaAxUAv1r8uFykxw2Ng0e88GallxNnXkyggYMwgYCkfjB8MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg +# VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOJ5l3QwIhgPMjAy +# MDA1MjgwOTUwNDRaGA8yMDIwMDUyOTA5NTA0NFowdzA9BgorBgEEAYRZCgQBMS8w +# LTAKAgUA4nmXdAIBADAKAgEAAgIfEgIB/zAHAgEAAgISXzAKAgUA4nro9AIBADA2 +# BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIB +# AAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBAFllnKsruuDIfiyfK2KeJHWLOtBPvLfO +# AVFATuQvdCFvYHc+d70GI0mNSgvMBih7bQEQ/q/4BXoRcZUBuwCIKymkpukBjY75 +# dj/jnarEUfGFWIg7c1aWV8CZYRLKFz/L1YmfmKCJr0u5REsMyI7NFANev5nmowrH +# i/dj0tNTULS2MYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT +# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m +# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB +# IDIwMTACEzMAAAEgGjnb2WufrfIAAAAAASAwDQYJYIZIAWUDBAIBBQCgggFKMBoG +# CSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgxi7cFz/h +# pyxJCuiajm56t5dJe6dQAvEI/Q7ZKEVEsqYwgfoGCyqGSIb3DQEJEAIvMYHqMIHn +# MIHkMIG9BCAcDFBrFJx21/VR4TsFktJBSYQgHP7GymOt92ieZ8AaVTCBmDCBgKR+ +# MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT +# HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABIBo529lrn63yAAAA +# AAEgMCIEIDTYfwwgjIHOkjd6N0jsAjQgdAx9BUjVlPa0d8mHOvGZMA0GCSqGSIb3 +# DQEBCwUABIIBACeZPDbFXHb6PJwX3RuTqqu4hbrSVA1NQHZ91pSEqa7250r9bRLb +# 3JhzoA1ay0/7qPtzKxWhgSN7aYzX5lZrutVbkn6twEjgXMr2BroxETj2jhAhKYwP +# 4TkThu7/i17ZoYpLM5gUBsukR8bpK6QXbZDYJ+kl1cx+fVFzLnI4lHYCzMFI4zic +# w16kj3Azgltsfh6GtNfZ9lUI6riO6rfKGEt7EsvfJHv/FeqholYgSwVNrK6qBJhL +# KNmMxh2cA9GLo6JWGStsxcFajpuFAV4WysokgbHpikMFjY8NjtMsNnMKxd/dFiot +# WaldaA9wCGo/qXwpLz3V4dnI2CH1CownJFg= +# SIG # End signature block diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Azure.Core.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Azure.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..e52829cd90e5e9c9304cdf1a6473e241845c3c5c GIT binary patch literal 128888 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 MomJEI3oIf24{w;^kN^Mx literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Azure.PowerShell.Authenticators.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Azure.PowerShell.Authenticators.dll new file mode 100644 index 0000000000000000000000000000000000000000..5b85b90e39774b105598bb37c8ed91724e6ea6eb GIT binary patch literal 19840 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 BO|Sp} literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000000000000000000000000000000000000..0a784888baf18341861adeed296adc47cb8e153c GIT binary patch literal 20856 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�Pn(T5xFgrrq83YV^Z>wJ+QQ+HP|f%O;;?J~2dOx#J}2>UUVB49R# zW2gjcF|6+AW|A=#ISeQe$3naaLs7VyO>S0`o1Jl(kyv0X==9I;)VtSSMLx^nG|U6f zyKMPDneU`!4Uwblwduv-$myIMFBa<9QU;5T?mTR%blLK@(0Qnm$PVN?E$0Aa z_c`kZF%(?cN8X#o7uV}^W)7?iuB2D0W4ncNg~zDHp$$u(G|p35oPCHR-)`@l#hpvs zt0XS=UKlNwxXrZ>vGLAB#zDwU1x}}2*Z2BU}Z$Z4Objj8wiYRB9GtugRrl| zU2`uL715kSSp*IHT)NdNOyK=!6I<>XLSLl(HY zs1w~UEf2l8t#52*r@LrV$65>1Wx~!(cWoiN2|F~9?yeBS4_(Vn@M3CW9LEbF`MdFY z$}E5G|5&CRm^*HMzPQzv!pu4iJ&bsdB(d!vUc5ceF|Rz@QHgdC&xa_KtlouUok|I+ z3Cp(_9`fnfX)URIJT9IDk`h-}db7u;do#zgFiQw8OJeFLC~QUI&C1#a{O zw5N)#&Q5Mc5^cq>y$J>OWx>#yG=!H_ta=hi8V-t`iDKujuUPdXjI^Zc@m_hG^%S4s ztbA-(0BN(HL%-`BBK2WSpoh=?L=BfwYTesVr&q@WrAu~WDL}lRJYLD8T;HGPNc<|E zL3{vDW(QKwu5+lV7Q0o-Aq)S!(L6Z6b|9ph;Rm(h2e;vewBd&eo@}};^?4ZV>J`$m zPY~yxS~p&q-YxpJzJ|RLED?F&8tgaQ8)UkxBApmFeDZ!EtOLD5s+4UnusT(B|l}pd2cq8TENis9+EaO}F`cVYGc~bf-sp~m> zFLfOBa4B1K6MbW-LtK}vl7_?1EQ}Gi+}BZ7G`g7pV_|fR|9BoQ{7Rn%Ail=R;2w7Hk~hUlOI#2=y54tbJV!j7RW8_<3%GF*oxG&+G873

    $+Ed;yGYBf8~=<{G5A`N)uWRa<|%wm;H#=; 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 SwZYCy3e;1~j2W;mkpBm-klc{~ literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Newtonsoft.Json.10.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/Newtonsoft.Json.10.dll new file mode 100644 index 0000000000000000000000000000000000000000..f400be22821953307892a98b437ae46f1b267208 GIT binary patch literal 662928 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�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 z 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

    |T6Wsn^)OOQpI0z~^{mkCn8> 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 H3H|*)=p_Lo literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Buffers.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Buffers.dll new file mode 100644 index 0000000000000000000000000000000000000000..b6d9c7782d275b83f4d0883f9bfb2d65fc5c9e9f GIT binary patch literal 27992 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%0DV%GL-7lfv$jZq+l3F9+zd% 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Diagnostics.DiagnosticSource.4.0.4.0.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Diagnostics.DiagnosticSource.4.0.4.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..a2b54fb042deaf5d73a734ff42aa9f50f3ba264d GIT binary patch literal 49528 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 iq^omxm8lvdyZ6!8uVmM2y8i*}vNhU_)mSsO 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 IXGb{$00BiQzyJUM literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Net.Http.WinHttpHandler.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Net.Http.WinHttpHandler.dll new file mode 100644 index 0000000000000000000000000000000000000000..8bd471e74c6e0f2b46464f143a2ce56dbf8cf389 GIT binary patch literal 117656 zcmce92Y8fK_V<0uyfc~f!b~7#CV|A4$z%v5Kp>RRq(ediB=pclWN-o&!o)$;Ma6Jk-#PcrWB}b~|KIn2zC66=o^$TG=bn4-x%Iv8 zFm=wk!Vp53cz*p=h(9Bwzj}uM8N?8s;d>xM+@115$)B|;FO)Q|JgVKlHWFSDX*!WZu>;3KUJ#| z;$%$-m*md60=OUeV+e)FVqBMY6NBuRe_-O@qAxU*tNv6HrGMR_B9*iWz0(PY-Uf$a zQm|DM7mY-?PZMbfp1)iZg~b1F|NIHlIfV=Kgru~gb<0jz2YTHmRW2$k>`wmkqZpw` zdt?ciY#Wu`0&xn$q`!JJS17Vl* zQkaXjIS=va2vPo+;{B)KG<}sH@v$`vWl*i_0o_lYMGR+bQ9y{?DpQ0Y1kKrc*e8VB z5z;*YkGmpIx55x}8>ZE=op_eF#cfHM0Uvldts$l$Evo8}v;$PyR8E}c^tHA6dJc3r zeg4)|mm*vs(wweCH9zGI|K zGP~R^L;mgPa_+Ji@d9oSs!|ld9x$ozWaqhU^fXj8MBVN#qr6KP!8G0K6)p!Os2eDe z#{Eba8Ck+WeQ1{$!4eyeVg+;b2=uNs>?0s-+W-OGu={ctxKhgWWRd){JV;sQ(XTA? z8dtJBiNYLr;9e5LOgN1sv2n@7>B+=j zl8JOPDb2)W;?!i~;bg+;NTdn949C>%N~$ULRScdO5k$68nHrf6xps6~_Xg8b<%z5S zX>JXpDQ)y$tGyq^=wXc6ZnssLr-%Ckt4zzY;p0~O0E#u3m+Gv{H(0JRi%%-cbW~pj0=ajJS33;oK@+WFy3|n5}Od2nidWSmCzv4jA!xs1s=T zY&|bZ0(!?_K(`f42ZK;6T+8esfT{XM3J&zZ08`)$3`K54>-JEOvm8ulf=Lf~@>!9q*Ds#%ErJeO4^K9e`5x z%SJU?JkDtXO-^%2w!XeEoC*U~inHT7O_=Tqr@kJYQG=UU?Ngy{gB6~JAT39?F%e69 zG=X*z?&S0tGW~iCRt2ntkt8JzN=YLtp?ZfoA{9E?|3C$?jOdLpz%rvZA<#YH84yg( z(d;If&^lmkfgIP2-Aqbys~ln}bfiJY%N6A7)Hfng_`a`CcqVYTnLP_(a7@8jt9V?) z2s#^#bwpu^vs*x1S(b0Na@aF+3ld*h)=Sd%9B@-D-5H(>1o>HsHG*!KowvZwvPy4x z=gmM4SZ9)T^B`CjqnOTH501uy#cH3=(G=sb(VHt+CvxFGy>kJg?S%kAhnd&t3Fsc9 z^R|Q4oJDFDu^Ni$y#3(lvnjfbqbbI;(F_#<@=;5aqLXE!uJYVwe(N}l3p9H0;%gzQ~Q&{mD-GCcW6JPXe$cpk^|0-iVV@nU#tHv>e{EwR>J+X>WxiFGjyPj&hl24*^aqe4A_g?zPh5$W_bhx|_8 ztWbIF6iS9nkZe4m$P4H&LXjoV{)ARAS`IWx@7UIH@OkoE(F2bk&!?~$uEQbW^w4-f zc@3-G2P#s{s@@@VIHNBUioB86Q-n4$`T(J@72MkhUB>9uK$9#O6>>X$GeTLlr;$jQ zMK%%I!RT>^NVkpyLzLo~1O(pAA@v)lZ@P>u2Z6y{RFVK5411#11`_!LtL#na1&mUQ zMXq8rozOcN)d_u+(SM;?BQG%eInZRgyEA(XF_a;Nlo`s?Iu7+L$db!dBt;O85lz%y z0wnSdtG$5G&lo*}(4QDRiO^IhRoyy53m83$&LnJwwCHoROpV4AM!;I$2^zqb_$<@Y?t4)TheFYzP`kKhqX2R9>gN$tAWP1s{ zkWtL(B616(y9s@Q(FcJhRoIw>RZXz!B9eQH<+c<0HKSVyO>t4NqcU}VqEs^m<~e;+ zLu086Orr8N)HXrJ>03gI*HCd!fZ~y)qJ&ipCA5yweuU0sv=57K zvw?^_%P8$IBcCyP9MGgHnMiHjL~Y%Swr(Q1^i;BT8ln9e9Yg3$Mr#jF-9UD=pdNaW z$cZe{gV4(vbssFv4m*+ZYCv8equ)lJV!8JT{esaq2}mprBm1*nabhONvfJcPU@5HiiXHZ962p=7l%hi zKIU))HCc~DlT9G`sgUN#)IMT|YC$gQxjL1tIS{V+SX)R3X8D@rqM$U@B@(dHS zgEs8$ASCogZ$Qe?x&sv~vZ(pGFUAc1B}!;^zY z_df$p>o_b7#pigw!Se&219(itQxj+5@!+Zb2Y~Jm0?GuRLFj8d|HAVN9s@Bcc%HzM ziAVRJ3)niY0CAV$xeCt>cy7aU51t3{?85Ujo)_@Eisvmn@8S6yp5M|x85)xx%8&9Q zwghW9aii=iWrWXc#0XSj^vsSF<^m>1aX@w6|4 zBgBq|M|c&!nsBe=9|JsJ@z($kjOdN}#^1DhdpQyYX6g0{gxF`Dh-lr6ZXhX~O<3X& z5X;6ty`uv>xHFPk?O01Engrfz$LdJga7U z0&|RDYEnkneT9)AFhD88(xn2WG)((gun{{MrLZF;g7VS+)r&BP%IUWJ2SQi@TmD}| z&R9UFt*jO3Wlu$b!sS+JbQH(uW_CLpWltjsr3bxTUZ@<=y4VRSdk2)_vE%eB$rtz0wP z^rP-XC<6#hJE3E0cOeTSycbeK{=z6mc8jIzI4au=e~?g=g8>FRzGI`Yr|hJ<6vt$jJriVbqv2&^0!EmXbIvP_gyy$NDBTEC7+w$Su|W@afyi}a zJAxym(xj||I9`+ab}QaTI&vM8gPA%qmKM++(c-<-B`^+cpKS&kWj4XGr0m=hPpZD~ zaj*gdxHJRtiHc2CWwe~8mrGY}ggNiwh)77~=sAXsovIZqSMn)Iu`Z8F$<@r&8^9=s z^HsPo`Bk>*X~z7MheMB(&^yqyPSpDGu&FZ&I^C0NR#c^An-}Cd^o~yIOPw15vmKX& zPk<1PCDK4NJFG@;uGLkLZF*a%?NiP^YQVEyZdcH9+USAqy`Dg}JRhXfm?`sl3&eJe zfgSmv{{GR#ZZv@};GrdXGaif~sKWthIKkR!v)ug=nq42PGF2CO`HUTVci2!&CL zZnrCps&l8h!l+|+x@E@@V7P+0YPd>aR%LohPXlxk0b9piwJ(xeK_x8ERu>3HpJ_Gi3qQbzWlz z`B?iYh;DQ=gil3iRvMlP%^N-qxMJmpF`CDT@D|{ms01^7IM^i zSJPZUm&@J?%`Is;nk!ns68=XqP)beafgU4BlX;+!!l(}dz3j7)0A`b@mFMi_jT{!{Kb* z?L@Z;p9g%eWzUuF$a9O187C{h+n?7$PZ9L!;q4Hv)bj$mFWnylcPna3^Mo-{y0e7t zb4P}t&EjF=^U;Xi_d zNqtsiKGZR2zZ9$(wG;|R?cRXgi^(SYGQ_a&!ZQuu>O3^Z3UcBao|;zqHms`d>$G=5 z3O#VOh3KQG9y4{zz8p;58HLZ90n7dqs6asPAkuR{qmy2a;ruXJ3LoXy0sk{Ahw0%f zAYNG`WzIrVX&5%H1kdtFo{j0mjZCga;H&ic!`A?bQfjFq&?)6PUv(tL26@;Z^u7X| z`(YU&{9N~Y&_bw9nvPQS@bd`5Xc#Lkj|R`kCe)OTdD*I{%yuy1lJjP^BYZ6~R?M!< z^2l8f1z7{(F6`|pa*P}^$6;qvr9DBuBi9!LgmIM0KQ>yTSKWm@DH7~td=Jy>A$>V%ahf}<&rV;4>0^rwa+_`iuY8~oVReFLJ1 zB@!M=0czi*cZ9#56h%XtdT*I@gj^v;(VmC#(71>3(9Td^A4Ro89qLa+VKfHB*(h}M zW&NG6!hBuUHFF!(z+Qn&VNSdjVQEz6986xo$w|%wS&7d-RL|U z^7gG1^P3gQ>Y$c<7IWwSicZ!Ao#gZXTRK@6bW;EMpLPOHgS6D){-O42+0cU)(_-%p!Us5pYA=78zmI|N$)^oU{|Pbq|nC8CG=$bb|jWZ16q zyaL@5=2-1_A{Tf2V?c3JApA5!rx|{h0weq!1$y`e4!EC&UzIrZ-SF!YCnLgdNu2Bm zzaw$#K;d^K{wKoUlQ{LX@P6R-UC6uh?)XOcF5c*#kLqc^8xdtOigEHDw^;6P?*Y5q z3g3%>eQ7H^z7Nki_kk7uGXTAvyB{H542BP4J^&^yvi0zTz_6-6(iwgTSomRpbgb(i zK^W|51&2v~j&Yy|s=6R0{3s$S%B{-YUL+=+UaBs4co*?AEUce87w!$PlERJFEV%wYaTT1xv=cpj#F> ziQA8o`tA8Nt*aTC)+EPk{1OCfA@ca4M}yQmXlBIuIciHbFjAOU0^S1nw4#>@_!Pd z#gZ%AlB*>oz`Sbdt|-+puhp&i{&Q3fN`=2FJn&615f6M>v|z2FBg`Wl6~7vf8#w*Z zcs~%~5fIJ64wz8qmh|IDGi2a?hI81E6i7opWb6kbbX=aWJwM{_W!T}&1kHl}b2 zFhR@yPz=2})K7V~!_ks&B2rz)QoczF#b8K%XEtPQ$fBq6asn^xIjnH_AIrpRa;N_> zNG!zuz#jv$$nEqCLow*G6*I8GqpGT37(l^o!C2>1K z?Wz2j&bLoQ2K0xrU@$|GcyUczg#?blFMuVZ#5Mv*@0L>d5BUioN zg+bg>gG2BdIG?EeMQ${&?>OZjT|HBs;lCnB?rtIdKrbx&w^0Wpg>v6>gh;OuIKmb> z`78Aq@@?|h?UYxJT%D8GwZ^@iW8_%_@mu2Fh_s}`r*z0gczy^jPqTMrI%XWhH!>kj zvec(#UqWX?Zhlb>b0Ox7i^&yrP$r%p=Th3~NLvA0P1(w=Xl45iqz-BUI(S2WH7hf8 zdjlH6o(q6eNxJ!g-CQuw@b$CE>)du~ys-iXZDFmz2;J9@heZ#!VPJ;dfdz&sTiN3Y zH2sBla#=>4d2zG3enzTvro9ZR?6=6|{*h&5KJ93|Zo_{n zi^yRUtJ}}xae>J3`ARHsB;I5le7rUX90zYL?KMe#|44f0WrveE)J}$ILncA)hnOEN z^d-Jxg&k9PH)tbFT8% zrlMxhN)r9StW4pRB%y&we0dqfp$67fZaOe_x4#Fl0g-Z1r_y0jfkX*)w!w=v!7E=HN4g;L3#{B7=x~Wa4?_c+!1$A zIwqtkQ_V~0Cg_7s(TK1g%RdQ2k|utG7EY)vj7L_UNBWJ&2xDPn*$b)4F=Bl~#1w$! zdCdra1PUn=_L$aVq5m#AO?5d0v@}1z>pa)B)*0Y_&99AA(Dv`TKgWV z9y-_i61oOJ7rGegY2W~a7$*nzzzK2Pjfj(UsIm4gNz~)DNT(DIt*OQIMiNMZ6bNw# zda$HJBWpLQ$Se^WMohm5EupYp;1%-_Jb6TcGw?7GS%7scLZsM%f{N=>Z&koEYGd3-VWN&SEL&$w7j*ta&vJ+ zf)$KaPOnrjFX5mH6-o6?e{a7naxvCu#X5UZV35wP;|+fb<#Ec86pc%rNP|%n`>%z1 z_;YBZu8oY`!RdM!m5IA@aqiRL_8TJg+1|sVwqAs6Wg15L25|dlNJJWN*|?1L8Eaa? z|KP;r(#n#ddKiVbyx}h(SuXuT=W|RdlR6w*1Bv|VblqM|$qjo61w8K?q!~Mu_rc*e zUDZz99fV6G9%GEPz8lfh3M0@(?S3plsk0|DNG96mGXG#^68izG4{b*_hB z13KhZBxYxH+b9a|qq2l=8ojl$S5n6~BEGOTdnGTd{r?PMC0nfpu-2XiO&hHCub?2! zvZqsv=B2xm?fIGu^$O(Z7?Q3dDg&gD3-5%ek=?miBv+>T&q1G+TD!9FN+u=zPsF*x z-vaLCd*Qk`M@)D_erZ8tI&Drchi6Bwf{}(j1SS|A!)UcZwz)I4jkp77+TTGzDz4M> zJ+urI{SSB^!}D)EP$2@+CoI{{QiY#J!0J3*z6+EB9_e;UAdLikvg&v;{SUHVquQ!- zq!wMyHQ&Rk-^`e0u>~ggqHP{^4p%ry-1Z>GYX27$9AxqTTf%hd!r>pFwj73$Kim1; zIia$^pOkmNx*N>)+fdoDTWAoRq__WwxF~8g{x)cpzVTL2_D|qfrr}lb&m=%B%tspU zVFr=!+P{EL9rggibp_}t^hTSL{t8aKA034@3X*)DjXrE4_=EylJyYda_Op`voD5!& z!Rs=3Lk9220CO*;$Ha?6lotW9=HoC7PjDmVCGhBQ@eVSU?twD`#+`8nBVb?vmJ*DB zfqIb)M!>+JE*Xq~ac`W#2pIRp8H|8|u~sHw1mz|_?}>0QmA~UQM3+@&mh0{HsQ)r| zlo%Gn#2Ji$fz^hTU__RE6v|G2`o^aa%N`ZXPy~665h_cL!bu&= zq4BX6m7A6*ailMqA}ZAhyB{hr*fX*VLx*m|0*jVtw?opf2O%m>VW#F~9K|Ggb+9fu zS8sBzY`}pYbK#jP0UN_TLb6d$UK@j>MHf?WEeMuI;lgw=We=G;fHHpu7`>?)pxX}E z)2>5q!<_i10hVom#v%e&q*Om~h^tYyTKEZlOVLu${Vhem)W~uoZ$PDNaCktXuf<8@ z?4!)q{#kZ0?2)OEoqI#3DHq6|cI;sBjy}T-RM9BhX$^sH2zDTBX33M@D<0lsl z{fdj0=vTj2YSphOTDH2czCDea?h~|#@&ja$yme4q8gj8f#$vC+A(z8A$g(Q^NzTKQ z4zJ7Q6!&kq0WN9ag|<2*OOj89YkwASvHa+(yZU^=Ymip_wkL zHC^(p6vKx5S(TYaoY9_%8fkRVWfokibhUb0>HZ5T;a9RIq)nqia5mZKA?_#Y? zo)mvqz6N+&(ktln_AJzWuIb6erC4G>+K{kvQ?t#;B`_n~>B&xIV=H};n-69<>3X46k=BX9%Y;K8gMc+DswQYx~r0>-^jceXRzWdpIoxaR71>h1YtLJAiAXf-Q4B^O^mE%fB# zgVUn8qV#NMPFhYneH&wCr+fO>M;>A0veUBDW!+|Gr+C^?N_Vc?o9n3XMV>iCAe{t| zlN5kqs8)<(R{J=BFz%+hvrQ|Eo7Zk9BAswiSZBdxTyb@WahuO=7ZE512zqry;7+T0 z-|#TnoOVMH&&}w{kd^QBg#D1%o1GCDRY?0=`Au*bZHp6Wk-;8A{$uesqa)GY9(ONX zV)G-$zbKFVUXB{eVTd~Jm2=4@kf?{eV{)q5PsGlC2GqT7>=l|4C^ z^b~c=q8c~FQlt*gzBJ5uq^AOUMpOOlgBlMM;N=XKvYb9Io*wsOLQa*`N$D&;uN*`5 zG%26X@AAy{QdC8bz`TqvO|4Xil|Q$cWliBn9&j(L(_t~4B&J%1$E0rwt;!T&vUke! z!Q&x|K94h|-q43ThzVCn)qO}reJU--Fg-3ClRP$rHYN^&kf<`~2p02~ z64_>fT}GT6Ehy=4OoFJz~-b5FW z2af?yV)bQ4UqeAL4`5DLtFKpqsnu5y$>r)Rd0ayS+vTVTy@S%y#*p47cCU3Z4Y_`D zI^+@!`~7m1$P6C==&(`ga=vebmFRA~Zh4ERa3i{xLo@m|hmPnw9Lj0_O~!jf-#}<} z5GAMi968MsBR7HXh#3Wp(FYchgkc3$cP<)w&;Gwdqnpkv^t2AmC{323Ngr1S}4cY zo#V-`6YEa0DO?Fa>&_5KzE8_Q@`B28UIr3s1bgWn)sKqXy5hMtaKfo%V1>dOEjqJ(cxx()Or33;4B0-=7Oi zquDgTx#8^8r!v8tz`o8umEh*MR2hfyn*VflHim(nU&_%uj7~}Sf(5=gx)oLhB5yKu z`v@;*IF?|hu=`Vgp}ep<;6I(;zzrOu`(_U;(DUp51g>6K2mio5(%E&FA*}s~i4Ao- zDD;e^P*}?2LjfB7 zb-txIFh}>(SzTy>q(k#6R_lD&7;4e|=TpqAiaC+xT&8mwKEUu(hQ)p=@d$>i8D7Nj zWri6g6kE@54Z~X*?qirynp8vN2dH7HWVVgYF-Pwt)K@=noL)Sz548g-LSP^gxcb0f zG2u{C=*4xl2x@7Kq~kpRDjcD|4n3F>*O7efB}Dj1{lIeFAA_1YEYpYuSVv7GW9zUc z5w)u&P1TOACq=n{>Jo)vb-zGC?U9nE*9pxKfhN)|>Jk3|;(^A1c1aYmb#DQ!#oC*q zU`pLfD#{dfdlc#tbvTa^wU{wks$S|uZPeYRSbkA=Ya+G|rxv0XCsQmfH0efuqU&hU zM>z?z?gGGCa;C@xs`SV@hC3Plm0?`%p46);C z{_H~Fi12Ny8akF`1dMm$3`Ukq%PKRaorzh^8@NQp6eh*so;VjFA?Be2)V*223VKF^%<@Dr zJ{%n7O}3W4cgSB9tzaSE21P?EVLycUqRI?o*g#GWdmWSqGa@7H_;S}>Q6YB)k=@{> zaI0X0L8I!b>MR%TE8yz|FI(WMyw|E+oK!WHGad52i9<2}g7%SR)opJ57#Nj!v&96( zs?(h))k4JImmDX_Sq8#7uRC%N_!j#Eekq3w6#rUG)-l$_^gB%1JcPB^plH~!&?U5H zDxK~OSY=_Ta`&1O9)!SR!cSj~4tOJiR|E08)!gB@-JJaHXDYQ@WE=z<{q(Zct#0VU zhw0-59t#)Y(=}{yOxBraHzG$|hUw4uE8S@o`KHU;8pf!MdpACRe@BWhRP6#Q4SV|! z9oXfBF>t#ZD~h<%eH&;G=Qz|RY(PWpSWdZPSdG#tBKKQ3_jOpX;ymhl3LMcJ5RhXM zNg>mCPeM|B$Vx9wnCMArCg~kFQo@d#C>}nF!KVET*dM!@6krdwJrI&7keDp201lCt zLda|x4-}uq(C^GxNOCSExr34vU_IeO{S86And|ys9*|!<@((y2d|aD&kBjvqf4>-N z-%fh&B0V(!(Ym5P^ceiQ2W|E|aXZ^7uyMnoH2{PfSA^yg-2(x5eKO zV^PCDWI`d{n;?SEF0k;I8?T^Z?uO>1czMS|F)$HX?+$`?{7BEk&>*C0^d=F1@InO< zN*?ozrArQ9k5ueEV9PhKU!x)qV`6RU{)@+MMLlpXag~%~_%=3=&?LQKG_{qNmaORo zXy#)kd4peX50F&3Ec`4qpvRK7?F z;ssE5nOQTP^@N859Ht2iUAHSQFU6h3As0SiU4UY$JI)j%^R!2z7NU=URvy#_r~D_LrL+{{g7CE}DUDZh zkPJ7n$w`I09gJ{2H03(8o#9bHDo5!ayyPRV*R!3`M=9KhRiK&U)afm7#k*VKs(2d* z);gR36y)NLfE4SY(m~T0Xe!S`RFW4w2rn42iMvj>1$Z?GMd3SOhy3ND+?1RY{^_Dz zSB{HjezM4$u*emCtlJ`&PIoFQ-u;n_OcA**eItbjdZ5E=dfXyt!s5f7<5K+OcE-C^ zRRyWpsqrevPh^;yTm`AB3Qp$?yQ?7euqsI9D#%UC!=Y|kt~(nWU4!l%1nX6m&=^Et zVB>lQuK$vw$~zi|wcJK_nvLW$;ReX7^dABpns?yWU%Nb(ryqVJj9lS>XCaN0=b@(e zDozjLs5HvIXc>TBMUAlW8tS^R#eEEpB9p6yyt^>Rr0=6tmddHNQHo5sB)wYT4o1Tr zj>xd2!%LI$T=eMV_GOWmAyQUplxL@hZv@&Ux(Z-5uGUhom)|%@T{JxI?dqAEq5BR< zCuHZ#&akoiad+h&%(f?j85o7R1U@OQCV=N^lfPvKA^#R5cp1C_7qcyHE<8RTfy@kQbf#36OZT z4A_nyX+@s`hSkGL%Ug#vBsvcX$V)WTDfA8!P~5*FK^Ti+x9kpdMZXC$G{uo3&eJDX0cjdzY@VN;UoqlJ4Lgl!5Tw!nmeD-#L zZ{W!?;=Ktr1KNas5yrW2zhoP^+is*_wR$C8GO&}s6KhFHmlVDn3c zbj_7jl57386_&EXQjXFSvoJh`6>|0BZC-ab>SjwAHyPMs0}X$L(MQ)e zz5~4TbpT!gk@^GHpP*N*fG9?$l`Eik6Ey4chChQEwIsR-`JIgd;QM&^Q6fM3iprv| zoKxVC$MXQpadgBjU-d0UewA5#>8<-#z=p0&3|V+TiF<+P*s@wCH=3S~fwNPCsK&@$Pn3OA)zg`bG+q z=1WQkO+0O-Nq+6!zhKEV0CiHCR1Y5ZI(;KKBYiLC<`-|u&~OVFi8T$|!Zu({)7=ld z*{UBdMR8%t8&g_!&HAqsO}8`d=Q^$vPBraJ2fK;xbDL*Si%1xV_wS9Et)ijiq$ zXZ<)qAJkcgTn_87IEt}nB(nOAe#&wG7yYzb=kNAYDlhfZzf-tzKOpr}Oe+=du4KC? zqPw567-w7ncaDIm-CRGDa)Cf zTu$^%E@uqQpm%halX~XCfA=#P9H6~o^qU4t;$_g5qCQSfkDDN0CK{gLmF18)kR zB;ThdHtcznCtZ%5Psj+pA?Vf{)JxVzc^;mF^v&oK_{kl7rnUfbI4|piQ%0Qdc2G#~ zW+@CWq_{keQ$NOmzMr@+n3~W-2jrv&M{D#Ei#sryew3Vl?n8d3KoK}|qiezTwG@tS znlxGyC>;LM@ElhYstQ$CRreo490&g{Qo~$)7v3qvLkLe;4!mhyR{ZO+W9+f2b;L_ODltOreVZQLCmOhoaoCz%vOC z)#sgHL=n0{qZHx1A>5kmOdEs2D=9ymmW&koMkrB)O{pF61((hVbGk z%iApRu}z$B$8hW*f)~#xxM(E7>tUfKUYJ6*oi&kQ_E6$q!Wu3dBl0cr)p#mP7sKz5 zq*#6O)!?LZd6$fRq0SO>CK118)Z%8?HjU)p)(Ouv2;W@wVdE3x!)a6x{RWWy50j`w zub7l-u!G>Qk?`1r=w#I1SmKR{`4hOlV*tEAL|GP##8;@GJx=sBMJW8 zMDUZEGvU3DGoH$=@D10}Jodox(@E#dHp*)p*Y>z&WJ3m9V$PvD>03kgoH3BJeK&#X zZTKW=sr~Q`x7e>wonwj6m^S#;x0M9_jNcL@nLD{Y|IPhk`Y`G#LxboFGsU{6rT^eUN3l+JOR=iEA`n;Jh$Qt(-%JEoVUTuiN>Bl24@s$dAi`0^xt zg{UJq?wK(};bk&Yj>@YWi5kMxyE8K86E&36#j1&#iyIS^!>Z9ltrYc4t(ipB(P9)+ zH^Kjj8pBlM-00+15vH4HNEb#g`Wjz?k7J!~)Yva#BafI_V%jv4+=#OU%3&Z=F_fRI z?y8GU?ysGU?GeTGolcUch{e41-nTe9`51AkSjN;9Or1d#(k(;p8Ks>Kiqf51Pw8$E zce5@397NQu;xVR99}}ItP3*=Qu?v!~O^!}(6VKzPPAT0JY|CHhH$_3YS@Ko~m`8)BZsAp<5$Gs)6Ndf&8+O}16iRs#@NOvhl=2o#!QP*S8Zx!Ez zazIO1QH@NU#a?hg%+`#OEU~dSNnWd+q#4k1?R=uH(@th;8|tc6+^GE_N%Cgx^d#yI z?VKd)F6}%{_me3^o48lo!PIKl+9q~s7cn&#R=0_#wM%3U9QV9-X_A)Lw4EIH1WUf5 zUCGp7l%Wm(CC$}ZF4YCceWG2<)QAK{H8Hb>tfn}kUc>UbReYwXX-kOuK~ZsAs2WVCZNdkNYIi3VO-G47L?ORRMhfw>DARA$bl4fd z;^7!jw=wl>o)E`ky>y%AMt)Ij&)PuU#ndCYMDFSvp4vO-_PXi#okt(hi+c_3gws?2S>Af0bj_PGt~ z^&z(#gr7Q);Ep!9kq+MO?0*xm@mi;yZg2 z96E^LJ1kSnr5G}cIEAcp>omgOV)!=KWDCa{ONl>|%RXov;k&03JeyO^wkzXJaab5M;ZQsYiT97$O|sw z|FMeTc>@Tpn@sQ@QwW~Rcp10m60TK)YrdKJCor7KFpFzx4|_r`m*`(J&+auV=9xt> z3viJ5YSMNfzXI%wQfuP-#k+u?Ka)7&<=+9`jkoOPy&2Gfa-H? z-wNPY1gZcx4xqG~0yTgaVtmlV>wU@crz^;|;viY|Qh+S{hT+|PNv5Ii5Xhg%^5^y) z0laTu9AGVTQu9_l+2aPt&zLAE%zp#?B^R0}xL=G4LSfPY*`+Kz@yV{8TdtueL* zy$`KFWl=$ic$!PyXF`_V7~2SbV{9&Dq=ph9HIV&{u~*T{`ipk>i6-)gErsTu%L#V} zNPa$BRU9O|pkf(r<{j%;Sx~KA;y9+DDYo2LCYoYjpvN`Eu4nvSjquEo1TBVP=HG^1 z+!Xta4C&qXq`fO9IA4c7#*jXq=Q*0sg!@a3o zZx>P-zi<=W*Ms1e5`vfJ6C8(jZ;ZX%K(Gop`bgnt4)iYfZtTMVycIF4Zn!xxGu_L3e1|HAse zX6R+BekvjU#{~oz6%)LlbBS_n23vRxb2g;XSoBf>!8e&RgDroFN8@XI5r2*^QZOsl zo8btCcd?zfbEz*Zcou#3WY*c}p}fvw4gd5Leh=Fa$tL`RT!Q;JHjgEb<`MYb{1)h6 z!JHuLxrJ+KHkWQMm*q$1PhmKf%RZRPa(hqG>0@{b*T7n?+a(-(3hTTri)5B_>{ZNp znQb!}-oo$+PL;{l-fxinSth|pHG=yY{)_pUTubw~y*4v^fJ^ic+u4`(mot7;9;MyN z@;`A|EN=0&4A0>*zQ&e6%59pGO7exQt%UI!#&@$nv~#J?W@{@Lh8f<+n!n~U?qPT@ zd)?f;DRjOVoJ96OdD zeGAK+#X6s6Zyd_83s~E~x!%6xyq0s?-YkD7oF>(4!*xviFj=3!#JV1u6{!S_T=+B3rOZ$L-4OdiPOX~EzN{~Hoz#fm~ROi9Gr~w zb|yGW8;Dc6m|A=Y!=dxi3pFtbGkbi6_C{)U;jGwkX#{U#d?MoxK%CmJ&U}JdJ24|$ zqR9A%hO;Mltd;dk8G1_Auk)zC>>N$}nac^jKZoG@8p=JHGrx{fx#q&(vVNRHUiaC2 zl9YDdG2eq6&p)!DFmBr}PXVm5yaYdByaKo-UMeTe3u>|p8?f^f+IBI;@S|Moh!Wey z`J>A4d*!z)>W7*#q;ZwVxJSl>3f-bbQBTaREld}46m`#-`a+!bB&Z_`bHqDLZF4<4 zWols$@jWOPez$(*yj-h?_*qGA7O89L}A0lJJTp32H0O^0y|a^KgUbfdqB2 zC>CEx$`!Dm)JnyViuz?LQBIsOphT`4mJpSvsJY9DDpAzs3yBITDwVa=DQa~C#Z8Dy zmJu~mQKt+h3b*|^ho_jL|G<>;+p&P+=!Ao)%0)z-uBfcBMB)1Yj=OspQCBJID$f0O zMO`<7;vQDiD`SY-qp01ZiF!j(e`o4LMg6Os;=WeY-E8#%MNQ#)N$n$Z&#!4JEEV}o z?GS^STS48x)M>6amsW`~afhOQTG|8D1CkOyPW!}FE*?{H*BwzM%Edkv_uBl^v~uAq zqa02X`{%nHymHB%pHD~>48`ifT-)dnh{ zyl#_tVM!0XQ`jrD`PFW6%G*-Y?9n2o*ZyZ;V?nJ zSWc90_>+aB#kq<)f7CmL6U0+YoyK-f7B4WhLu|9(FPtnsVQRZ@&;PV=s`xfReO)+B zjO5q4vP9Fxu}tl79ntoE;dHTysm;*&GpLK0dQyb?l%zC@Vbx^IlVZVetEfqgQB-tb z54_u&qp0jYX+<-|3Z}@i`}CP2#?%h+kDmU*+2Sfi)uKLI#LbH8)!;2^5zoXWrx$|y zP*LkcUl+Ct6K7!5?)s6XMRP=Oprk?zgGKYjYl>>>S6#GF%o`-*j_p@pv{*c&sC7#w z7cCP%Ftte>JF2;8rMPG?Np3?~mJ}T$o?=SY=Nj>$jN^7+BWh|%a))?$?8>4wqJiI; z?GTp?Jh7-T^rcI}*dTsZRNMF-pi+mE&eL2wXH5|uB3Drl&T@bnuc+h4-CDF! zOjp!-!CzFKsWxKUAW z&U_2hV~YA_c0c^hN2!>SS2=z_Y}2%VGmGWDr(e()Z&xH_llZ7Asdu; zge>2hrdN&4qFGU&4y+QJ#XLnFfM0JG%M^8Y^9TAV;uuBkY0fV`MI5K7#~1sGPZgbt z+Pk<9sOuCpZ{`R3Y2r3ToiH=M_%!i|qTXE=DE@=kt*DQeRe^e4QS+xy5nIH&iaK$+ z15`H7VX0NNEgD>Wx+qlC6^n+0TB)eLh&w~9Rn+&0J3~CAsOgA1Q#`4t<%l~|WYtTZ zpADZPwu*d3xkflZO;Oal@XxbEv!cEq>HxJxQP<8GTYR>-im4|BjRj|mHx>0ML)_)U#OG^d*(Heklc-nJ<+D#LzC!$wsqNyvft!o35;v*1dyvD`;xR=% z11;Bx9~6}{`;6ji#Ta_+4V`yPIKTLMF*8B!EWSysW@;Pat}DJ(#8jL%@s8p<#TSaY z?+Bch;q9)};$_OGsBf7Xrl`*P2a4|&8x^&?YD>|*;$}r%*5}FM`$XXsspZ~2FBbn< ztX9;ChAu8mK!Y<;rbz`d$_HE2^L|2h`(=nmD%D_nO$FsD)#{6t9U_ z6}2;Tne%n=j-u`e?Ev+mqQ0Nf$M;w9xuW!`eL;PvsFnf!d~b+f6t!x=mZCR=)kI}D z&9!3UK;N4pLs1(h(z`UTqG%j^OZXH;f^NMzD9qRz=Z>*(J_b6pff&;xa|isQ8|^ zMo}~>z9()~6ph0B#J!55QFxztR8jXtVel_!9DSy54x{eAJKqRvLy-xvE8 zHM44h?*s9PqE=Tmfci#JL&miFJ`_JHs%^|-P)4(?vmSG+#NR}!qAKV10F|exy0S0L zk3^xOn#vAJ4&SG|vk_vqtE{XF|J5YzbBNMM5mm*KyIr>oCTh5%nuf3TbyMyM$&`1(TExj+ z)^1TVToYf2NivQ@U_fvv8X2e?GFA3_Bvg>>Y#3D|&Sv=JHWS^$p!jzmlbZtLVn*@z+hIT+v z|AZ}uX3r*DHi_3kIkj^Y^~c_~`BJsDEfgomtW51Prf4h(I5V}oB_*z#{HQNS8{0~f zr->caRX9nR#}sCu>Zg5q+E+|%6Gsny$>-7P=aA$MF(LG(ua{OePg41l_xlR9MT&ZS z@+ZDx%{8Cmwu#3l|KRJbH7M$#;kv(E+oGu2Ic~qL-L0s>1M~fr+CD|KwwC&;<)2vKQ29 z&qys|T%VQt5G{WpS++^sQZv#&Ogn+8-Qv#P^{$bcv54Y!i~eQXePgsjMHQ7z^-s|H zFttfsUQ_RysBKko1KU;e>LACf>v~LpB0{dok%G$))~z zT2+EtFS4i?o#q>UjSW?cxM=l7EHvl%jr`yTyO(GEP{-wiKPHEoDmW1GEV%N%Az;meJ#k4O)YuE*YIAHfXJi z`g~rM=+N2}_0zl_pjIjB{qicYQ9DIZ)3LYTsNJNfcbAPbHfnb%>f>d&o1s0Vs2Asq zGosp)it3t^C8FBPk`i}~zQy0EkzFyd-5+Ut(7!1`RW5nVzgbb+{HKOq@^8`ltRmU% zVmo$<=V&zvYA^mL-7QRQ6OqvS{__%AT>VdW?9h^T&=;z>9scvie$KyVOu6sykL&-S z|I$Rm|23WmTdJ7|EnX5OKwR}e`&2OxjTufExA8I6)YTG z@<@UjKd_->cY^X)wUpq?A*It_)lh=(Eff{(-BvZpJio^$>?(02QO}pSlc>Lz zWG1M8Ht#FROHfAB=Oy%Ug)GDEbN^l9Pf(XlGfT@8)Xk&QO6ga;q~!7Sg{AmS0!2-( zv`g`$5QjU7TJzN54T))%rQ5^Ypu!k~$Y1l=~w6F(vt`xUh7Q{&SM#;)5g?>#o%@_gZmz zDSn?pQNMs%q7P$gzc#;36HE1m2ubeOUacMlYLTKSZkcYc>yBHd*D8wQmh1lY-EqtH zDn(J;3cdOG?zk2DVy0w?Rvu*MN_`E-Z5GAa<)z)!EZB+vvqfnkovZXd9o;%t={1U? zxTAG{XLsDudWb1G(yrDAGlet2{#Tc-)+fj~F%+x&WAx=r$@88y`nf9Z%#oT{qhF_} zjZEF9Bx$d`Mt>|RU08ocO7a{KX5TdgkesuIzVD>2V3_qJH%n z-N(kQk4l2mus+d66QCi+FUI#D;`kB&iN6^#x|j`Uh-X;xaLzS2*^)Av=*Hvnf5UvI zi)(QjrHL(AW9ecdR?2a_#yA)^#2MyqaZJ(0{IMv7j<;ZB&upBU$s9HD-TbU9=p0L& zrPy8L9t&jRaMBTk4;e*iudAoDX@iOLFzO)=wFTX=k}vgaKBxw8qhC~4Q>w?Yi^l&T zGeU--Gtuyyefry^Vv$&l(n7t5g85Y4Q=o1=+& zBXz_!W9Y>@GH$hbIBU|ydX|@*=m6sMVUH@uP6M}nm~#to0~*N3NZ!FRxPdc+WL_Ld zsr;7vUr2b^>;V@Z-G{`zU9O|NxYe34#RNeBrn1oX_O`OT~e+oR!5KDXi zcN|lcac?4>@CSHiyd9~(NSz0_#rz=gr42I2pW7(M3iv$!4=(gRhd5(+Jgv@>zZIKY zcA5Los<>udTu>Ir<9SIL=?UFw^>|(PIer zn%B^aO*M8M%8!pT$&zc}0}k=ZAj(CKR1}Lo%B?SRIb4q%8>Ll;#{ORJ{~bR*;?c-c zjj=+Ao|dxRT2(wbs1v^m5E?(f}_ zGB#O08IPy!f*(4dfi&;s8H8%U5X6tmFTjWtm%j|B29h6-m7bQ|f;0zVv`4Qo)CeFs zQuF_;l}(&72*k<3|G!|6YdZVbl{~6@c)pI+kmkPV5vKSO^PNLfHFsM@W2u}Ybnzo_ zLu6r=K~J>*6Mr|`unwcWA$qXpR*VJ?asD*2xuA(`MlR6&UrHuwEINR`z8MEQ4Y3ew z6|~x%Zfj*v{QcNN(_T4>tO}z}EYS(*Bu_}ni)tPvP2$iPf*B!+Lo$th4&}&xH@lAN z9J9tD^6^-*|M0YOoS`wwc96z{{U z9pX*&V%(iOtgXM9LG^Y9<`I)tjEC6p!XnZ$s*P;86SzY>vPjC%jI%4Lp5+Me_-K;P zYb9+M2OuNMLaQ1>Sm+V)o+a(1aY++h+?!T$Kb37HX9~%eHQY5^dK!%kBpFXdW0WDT z!RpHtx4}35H~G{T4%Sb(?<}WWZgIihDupMM#{e^}|zzr$3%*JT-Vy1f8sA13GYTjPMdb zH}2r?X~@F&fCNV|oXD_|VJpKnhDR|xmf?wjbW34RLob}??rHFgD*(&I4S*W{k1x`e ztr0$v;V0q=oECi|uE8nMCxY%peIm+nDs;L|GS31I6<_Og2Jy8{=O>y${6?b*@AVsv ziq;0vYJ3u01pEzrVFNg9CB6luRGN0_un0K!&paN`J?EX>NW(WtJc~ys;jTXbvW5*)2I%~at#`OoHj!{N_!0pn?AU8woVHQ zx?k3&wa&j#+l1Ji_$rVz_tXXkZ_+N-j$d{U;P#=9YWEx82cHDIyZT9u>gpNrFCF?K zyo7Qb#&DN00rx|98AmVsMjOi<+}A~HGb}09=K&7WcNr_^Pyau}y$OI^#dR)R_x7%3 zG#W`T0!g$0vDng}(Jl}|Jv}W=quDe)qXh%4o}QMbtycHY-J`{LnPKr3I|dskCJz!3 z+ka31+r)NaY#c+36YSsxFR>Lvj1oIB3C8AmcX0T>@6_FT842gl`=3UAZr!R=Ri{p! zI(6z)-FwZ)LFb5h%Gj{$b>?a5>n{rTmK)rASuT5mW0H55@sqW0F`xDwzu|T>V|;b% z?*X4)pp5aw8$M+I8hQW9+-KZ=LqMJOeR<$SE@C);K-$es+ ze1`ef*aF}4zUmE2ee)%3n9r_wE#m)R_!{40^IK~YfPcS|@GIR3-!9)*b4kGI>-&L2 z?)}Zv_0vRks4(n0=@3a{sd{?f}l#m4E0v?Hj-9kA1)P z^-vHj-{S@F0IE@qWaSt@<|I&@UDrw%n@&~@8)RHtG9sG%J zpSknKU-&xBm$Ivo`s|9A5pzR^;Sa}s{>y=Rp2`URY2Vh^M|~OpH#_I~Py2Sp7Wy-O zp1R8Te{ao?jnlqmxn=&F{O{XxsehO6^vYHKo6L6%#R30f=U)G`lt9^TRmc6Cy3_ts z=>0Lko}CPTF2=CYJ?1Z&-ei(XUsQjx_BDZr<=oi2q_lSl{udR;{?lgfhD6|L^FMFg z88~Hh?b;v6oAVN5fjiABF1Lh`KfeCX0DJBI z2w#B*cYkdhT18EAH20CfN&jE0zBBN+aVYocKvlixk}m}w@qcOXX@t+e_7o`jy>-t8 z78`#BDWW!LRgVKgCPB%|fzv|CX>(aD96V+0h0H(Vd-l==!PCA!@T~y+{?^w7BjA54 zWccgrt_a>G=R6-q`K{_M(Fymcf4X5Pm^Ztw*&BS^_vI@eH#>np&mS=_-kU3Fe)7fO3g=%mQoC)5*{><@iHy?n##5p#axCcqEigu_Ym9XR!H(!6AS zt9lyr-yS+G@T8f&@jZy=sgjc>PnzV-KVA93(DVL0rbUD=)*56&PQK_#E#?Z z4&-OV45cYuhag?g`~MW0Ct_X(ncQUz4?GjTOHKvfC9~es=Jl8UZ^Tenze9BUJ4A=? zG6pWgIdhSXr%lcsPn)Nq+n<)%@HBMk^2lk)3)w^JX-PdTsn4i=Hw;E_2Bd#9@`BXz zf|PFr{xNW0#0Wf+`m;zR@Id$XBfl28dQ|xNgd!#22}*lHr1S~JnfGb52s+t+^r|JZ zGX6!7z!umSU!K(h!}GG)EtqZA174oE8x2V9J7PU=n1?*Nw z0ejR(0DIN*fP?Csxh*(zyA*J*x(x7owGnW?8Uh?shXKdcEr11e5^zF&39zdE1Mrv% zx3u650+$0$scnF_sn-F%UA+_VUFw5?cc_m6-laYV_yP4K;63W;mNvXeDzmUfolyUT zm=CER0p72E0r;SL1@L34bzTe3r>zD2lz?aqE0V?As zfPQ27eDK-m2ApHu1lVfa1GvyQ3D|D@HQ*BCTYym`+=gB-<^o=3ECgI>Tm-n<*xqKU zPGb^nTxX0RW|Q%Dz%9nTfZL4!2e8|C2(ZWa3Sh7CEa0H=Ux35LMGMdu#vtJJMhS4g z@piy5<37M~G zyNo2@2aJBedyJ8VVRgc|9`Hi~?>90CKWZERe9Slm_=GV5_$1;@^%PoUs;>$Brg0SU z-;wxdB<4B9fQROBz*h4fq_&$ZZHf5+VAT8=;Kk-A0ar@=YKdQmcyP@3X~1>9&jWV* zz7E*qI}Nzk_wRsHz6FcWBHv2DxBFs%@AB;hyuzxF9M$Mb)Eyc z^7R1T@4Er;LEi-6$9(Sq{Dkirz)$&p3izmR*13=?-*Uhwd>a6t^z{KgSBKc@G^f3;7b1j zz}5bCz;*tmfSddm0&elMmTmqA0K5I41nlvD8zuBg%%GpO4@=Bm|E0jc-oFxXzrPc3 z%)bF}+Xg03Y?=1o)W$2;dX`n*pEn zPXRvVza6!FO=|h3l<*z@I}!hk(Dt0P>-*B)ANt>e_!k7{CzARzN&S`oF2uj=zZ*~m z{ut07_#j|7KwixWkTb0T@@ip#oM{i-54c29qk)GIzBup~fR_dS3UFoMQNY!K#{t&~ z{-(g+BD^K=_ki01kD#3Hz+VIQ1inuG2c85R416ANSW@=}z6Q+e1MIK;Qp=doFfQSO zgeQcas+4~$@GaoKQShe(=Qb(r?SX$p{JR3*1H2>feZac{&jWrS@FL(n0m{IMz)unW zP=Hc*f8bXLKN$Ee;Ku^yV(>o@0{m294&bAK`GAiF&H;QvYI!nnKEh80qJUoutN{FG zfD-$iz-thGCU6DdbAfe$-xvHJ3gs^dvbrVMhw!%G z5MXz34`5I5dcfXb25?Zy9G24d3jXy{=6)%2Ov)UWG7D1Xgp^hd9zfn>!9##=3{EV@ zdwnE)Tac3T_8=waT|x5sjv(dduAp!`#MJvkOnp$oACvGWLd5x0h%)wQh<*B4h?4U} zh@5#cM9w@FB4@r9B4@rCB4@r6B4?fnO``VaP#UxiN`tluQGdRGGNElkKW&G$37tmx zSD`lm^JS?;h2Me_{NdXG!{K)T&I$iMU~Bk&fD6MP0BjH63%Dfwr-0G$p8;MReh_d) znABbtei-4E;lBi29sUg9y6|Iwo5EiJ+!Fp0;I{Br0lUNB1ndc)LhT<2Q`_GYCbcKR zr1nE$QhPtjgu^?+RDXo2;RsXbL_WFjQk=AUU}1-vEpUPQlZ!gwJ-Hw7BK3EGuT@_I zT&undc$L7oz@6$9#H7@D7kA(-Nml}9RSEErng*<>9|GR2UKBWM1;bImTh)dYC-BLn zYgT+vYJ5!Ka{^DR2S9`0hg0|qvwnu36Q}|V`vk@XW(D3V@Ph(BFYsRk`hvv2NZ__0 z>xxS_EAUo<(GcTL&;JH%Y5T6ac184@@2Xo@EI)^NV*)b*rv*MP@U%eVT;ePj7!#Ng zI4$r#fsYG3EzoEee1S268G+LR9~1bTK(&~dQGwe8?iV;E@Pt5hp5O@FCUC#NDS;;h zs`CX$;5LCVf%^q!1WpN@7I;G7eF7g7_?$qsM9LAkP2hfkQvy#2d`#eT0@YH%7r0H} zet}a0PY8TW;Bx}^N589{TJap!8d$x8|qh-de)_0#E4hI>ww3==0rrUI@R<_~r4d;P)o{-i_b;@VgtoKf&)L zejms0as0lD-zoh51-~ER_e=Z?|E=fE#%~dR7vOg}ejD+N;n#=XF8r?ZPoK9R*HQe+ z{@c&1;unVB`=1sY@Z91fS@2l4;<^Frff0`!C z95p{{e!={b`4#hd^A+<#-v-}^?||1I|4x6(f5iWYzdf)zuqCiB@cO`? z2JR0$5%|}@e*|6({4~%KJU7@COb2fXzAyM^!AFBn1-}=35pNJ)6WSDdJoLArQ=xwj z{d?%=p$o!;;Y#>D;k&|jhfjo0hCdqq%kccjhR9nYk3@bNX`dAY#bNkMTcIHqVYRmy z&()p}`j=oWa{=BJexcfpXEWi7#aj;l=0bec?6M~Tjef$1vV`dagda>3&Xd%ML5W#G z`1Xy2UljO9H!|G0pKxI};it9`{+Z-@U@OD_5GVXn7vT#6|ML=tKP9CN_A$I<-BWXGH~IqLU-!KP_{_*J z0hew2E#ME*#GLAB!_Hed)eg9L17p52ybR&zMlS|@;|Rke2QCM^XMkmXc>fg$|3={J z1+Lu6_}^Sf_~%3Gk^1v(*8pCyD-M|L?gxCbV;Hc|cO77HO&ajc$sC}jLDO?8a|kiI zUR|T6MAM*Y`|_%rfb(9Vd}8%cgmdw?0Cv8PlqeCZ6=V8R2gLn(!>V3E^)6n(80W zGDCeE(1fpH8sSrbCN$@*2xAsU_!+d!P|pIIcmv_v5dI#Z34g>p5IzlP;)$Z)L-=0+ zO?W8Yjqncuab6BB!+SyiP53PCMEH3?6VLLz58?j+G~vZ~Kf*r(G}Vjh4-x(`pb3x0 z-GD!bg=6CFhW7&gQvC_wudpM;ouK;=UTl02@I2$gfae>32DrpH3AogF065D4A!Eiv z2qyqdwcYqA!aD#>cq<+TOd1~tyw><6;&%d?@L&8D!hL|~U*i$L+lDvt0;kyb_zZ&5y)Eb0W!xyj_a09}fcz^$9z$+16 z3-7>Y!0iaHgO6Y{;I#;!*EP56lCHl5e=al%#+!|A8vkVc$}r4!bG12X7X7#S-|PRb z|CjzP!JWZU@C(6xq4x0g;WvhF4JRY7ixeW=#-EsF?09t>_nE7*I0bEd(A>G4oOr;z zPOcv{-`nlO{ljLWlh==%Ph8LIC#~yWnKz_)|A=+{jQR9F-hbA*e$G5!(jPZ>tY`e^ z&FE@gzhGVe&RlsB@4skW|K9Apj`v@-u3t63(ZhRqA?5lF>-sJ0`fYQIR&Na}`dg7(X^A zR`U9i`M{OD{?vT(T3&x{U4LmFM7#XPudVBUn*WG$ufGqw(5e9VJ>{R`&NTO3xm${v zaMr3meTN(Qcj2thVMo@*V)(*YeK-N4|1sC1Aq5Rd{b=HS4%Cn)^kW$E6oH0}K#$Ib zFLXXM>0-#$V#w2C$k7tW&l0?Y{sPF(1(2Bwpi3`;?Qjva=?ZvCS3sYxz`IvhK%=gJ z&vXTJ>I$_LziUv#HvD4vb>SDsuN%Jve%tZefnN`PN&K$GkN;ZLoj340XkAOz^|+e7 zobfl~dKg;eR{V~se>aY)Ip!PiuFKQvVe?$$gT8Z(lfFMRQh}4kJ%MwLPXxYTn89xt z8-iajeu&>MgXf!bLrcv|LSHa03-28rxpF06Dt4|`2XobQPqjK>#jIJawsd5()lzxuXga-SH6DW8vUPJh-MPAx z!Bnm|7ONaDW|?ZmF?r1zrViyYIyGJ@=On*G6JgU@A`F+0@5ohqfR-!wXATRFPT87G zr@Ql&i9+UhypX9>1YI(&n=zxL5Jv*3Tsfa9$c3hJ;hC0`JkoJ`G)m(ghvUn&r)>j(K zIaokSl*^@Zy0=s9N%r>)4-cld_r`XlQ;GPxD>@fluDkS$g&XO0h+N(F|q zRTRzu1(yhYx$1antZOn~fE*&hDO&D^a+O^9NN%i?JxLa9Os9{QGZP5b3OM?1%^KA+ zlt_*A4yU&d4fLhaGi%qVJ(V?STw-HKG81_OcB21t1q4##xdN{vsDZb+>?E%v5D{Eh zx(*GO^fg{SKEafMLJs^z;EX+=O7*%Jjy#BvP+Z)!8RaIuMs3Nu!neItrqHs>kiafO zqck_ysAP9uf|>I1{iIzpjg6|tOQl2k+#0oa{p!u}T)CP*kk4kShyX*8u>$0YQn8Yw z-Z=|ZXwzENmpfc4ABW_p*Qza2Pq|jyU<*tZv-{Vwg0*U5tpfWttV3H$#bPd7?a36! z3L=+?OL<2>hu`Y;DxF4bHJ=r+Nfz_f;o}pz6m-ee>nVZNT(R2Myp84V%`i*|4@N(YYqEF}7xHZ0-6@8@I39 zyisl6(7igoVcpub>pRzPTD^Al#;!GqSZqUVd-mre%<_%r(jg3l*P1z*s zd}Mh0CXQ~k1sY@$4Od$R%lRYdfg}~xVYCK~Efu?S)l9xn*{Vc^B!~BDg_7LSKLCX? z(!aBRU{8NK9#iOqbYk!DP%Ir!3=OB_J+WkedT^jO8Q+&4j19$9Y%rM~O2oR;-LYYP zw`V9hoY1$n%*IBB2h!b%;Y55mJ-lxasr{*R%n@lM_oP$to>| z-;H8fknp|x()|OV5V_K+-Jay`?xDmk-JDo=w@M5R4GeK`irS3#CKLU`X{k^e)SpOn zC%RR9Xy4#)I)Rq#9@xoyHrBnZErb;4#v}*&)7xXoUgW4n85m3q#fF(2kM+kBy~J>6 zi1qe%#o{~Dso~i0NGcs4=XqQ*3`ck=%U-%>Ed<4Cn*B#A+%`!b%87BAx8t9qYwM zK4wOX_d7`OLLS1(v5pIM2&8rZnI|f57%Ua?+2g#~YfY*MYW{CWUqCLPk_Sfm?MR#P zJrGlHsXp1gw-GJA55`idJp)5-&)M-JeGRFQHb?S?5`(?5ctXoj&7h&^K?IX=h>#-^ zyG9a2`&@ZIiY0)1h6eg~pig5v5@%qW7t3ygRb&EVc3@y<(yhzsY#Cb|wdvSy$Z)Ky zw+WIZqjhK;^tyt&1iSXyN;Km!;?G*o%$P!LA{CEOdn8jrt?qM6tkPPzZO#o1pgG$I zhWcW|>ApmY9Mto4Pv1cIh^MJmr()a;QJS4Tsp)Jd)#?|!&YB!fqb;WCagjs^)}TRc zS^A6Bc{NX5tBir|+k2D!E+u;sUFp<7d?)&n`rTrKXGs?7whzU2^ij#41=%96DZ0hw#NNT=klQwo?c%i8;khSKR5A?XI-P7; z%hcCQY!Fqe*Xqz}^?L8X4$Oac5f+)8G_0<(Q|!VmAxiX9Uenv5cD+?wsg^i9$-_e< zDb7Apd={7zor%O?{0!;61A7ufH3$wXEk-2!hZ946iS8tI zw>>3T^Sw+9ZlvAZ`XcoF!4cr(w|F)%zZaEHpA}wOJu;5-;CQe-rjx&m3+?*9l51*OQ zq(W^O&5UH#cs4XCYe!;OvCCt-*6qYo0@uNGTu zv9ln@hkM0blHy-Y29G6jmZH5g=vh$XF?8&1hanWZnYqEfdiB_BAT=ze(N~{oXaF34 z_2_m>Wo3gg(x1X|3d%KgmS)@etksq@+flS5&~lh#X_usv;sU~g2xV_i?r=1j7C0GC zKuth3c0(2029nGqym!i+VX*+iz>`g+01HMeaFPSv6gf{K>~~lWKYakCdPLBF=A=Mgy;G0uYlbOn!Y*l3012qdfrwDf<*ZrA>es>bB0vOe3 z4`8w0)Z|U=gJS4&%BY!ZhkM-wOJHDq47iaq_8(1y5f@Kq#xj(1v{RQwZw*_VL|dto zAXyWM{p%!KT%rrY?MWxq(^;aRoh5fO3_U%c5ye*BXGC&l#WP|xCfZW#tnu`q;)u1@ z{tbqVR=1jePLnKly4fI}+XtNFnd0?&Lr_!4E7jcLj^uzETs!DwWGB};XnNvqYEAEn z)=KZVF6pLQR1HBO#P+f@7Q0ubGRk=>jT#tm>eK=wMnwNeUsqztVnMP$g@sKrE}j~_ zh;Z^?P!Eg@502QY3va?u0;?fUDVl+FQuV>U8*)%*ptc`MsR4;b1(}*kL*J#b4+14d zSBs*^iYLpupGk>YJ%VW&&3|>c(5Fq1Evjn?sw~U*#IdO` zTV4#X; zE=od5MP;1{&oYXk6kRM1H$5hG8{8BKIQ&SMo(B43m?Fhv<)-Q(<1rx}HX@%cuxlS3 zQ%<~F6EO7fBrk!X7fz`WeP;`Ui$63%XB-L@Y&+c}hBA8*AM<@O4i&A7ck8yhyfMYC zB{cv?D;9R>@(!j8r=$%-^L)#>; zmUbtL#TC1uwu3y@yC=5KE!dG)an{DWhMoMi(q$LZnCuKP&1wh16M5 zQQA#VPl&fID2<*32Ssa7izkxOs1y>r)o^OJlZ8^;bn$`}y22jm;S9b(S*c_W=JqHY zZ_t}=de3o>Q;6kdkiC+weNd|1iM{o9IwtKA@tVelhGP3{$+p)%+Msd@v^vBku6eqx zM=W*ZWOs)qbv*4Ut>n`K{k{8KESVVeb{%tQEiaQyQyez0TTenxdc7c8yJir@+H$N0 z)kf-hN)upDZ%)ae$T4+h&Sno_jd3JXn9QZqYIi=P2Fsa)hcjy8Na9$voY6Z)UkBUi)$mMnL!<+O-XzMNW6&dCE+yT6R>cI!k=ZO-~5B(2yfj%D z>&o#k2L_3*$8OzFE}P3A$vFoB zbsUF&hD(Bh?r$1Te2Wx8caR$*M_HOva}oK*A$RF~DP6Y7aUyZBfrk>(l`7H>r!xhj z9M_1ku`!h$<++PQF$-&dOik3>VLP?dTS9x12jb&6%9JaDKdLuVq2|I-4ctgKfuA^p zBy1QiXNr{rxv~@p0k@<}vC%W7B`ZkD<`PAo*BMilG=`XayS-dG9M2T9Ii}%g5l@ZS zw`fbHRO|&^)p3YqW%4j^(pHn52r@P`o`JBTPjydNR5FUGY$(dDg5U~H+~~-G(buEz zc+{+fD4hEs1LFnWsQ7p;d&o{w=`jllCsw+SPvB6RRYbBP!iE7ergD}j*k{1Tl$=Hy zDONHEasx#-+Fo*tC`0Zi3)PNf<;>}9L=8@^Ixvwd%Qm1feLtZCdp*^VZ*BUVmX5G$ZylYnC?g+9>p@O8OzX`tMfFHTklia8f!OOv6z^-wz9h2wn?o9+2rVGKuY zbj8m2ZN%W{0Y|Ho=+UuUW4gr-OZ7CS_vR1evd6PH=4GF7Ys48W^AMPQ5~4{Z(9>Xr z=fKr&azVPoKC;+YDhCP16b{*qlnaf?!&z{%ZbqWUlf#pG@HA%fcJ?q1OconaQW>1E zOB~DQWR`49*WFfbOaMWRkygtw@Oe%ogELJHeb}8lkinQ6pA+?np_Wdg;yMtZGA}V2fagSA=9} zIBm5wq76+#5rHwqNf8D;&tl9Lad@(Dyb)i@Ylz;FtLpI}2PZjALNR*m4C}O@YCJ&b z*i5<66epD`r*^d+#6#s~a73@rg)qk3PDWwi>4B_|X)0P@RuCoz4sI&w1?Z>ZSf;EI z2cesfmT*HQErFpNP7-HxAaKt(4%DV5ctcf(L7F`z6O(eJ&l8tCV9$Z6JSHcVJTOu` zY|V-~rZAz8sj7;cR&8jStvO9AtjkaJR9aQEuxLl;C8cv z-D>YhjFO5G!&dEx>xn>Q!VYGwfMqmTv%M7wU02N?&WWb7GjQBHrhuYlW~G2D5PTew zweB(0-5aYU9tF0`hP9f(v1K_#}g9o_PX&VILISg#y|9?xJMsWZZ6kzr`xI#!n_ zkG0CQVl0~!tExCCC|j{v@9AcqySCzw+G^G=&)V(rnw}EggVXe9z+s0r;N_}VAw%%2 zd})pn=Z-lnfwI!IN)ZvWb6BI)x*gX%*`7ylCo8*4G#?SvJ;7&0R0hwCTK25s7O*s zfPTmU6ITgq1{!2mgf7_=A$dLb85eh?oVRiv$d_R`LPenTA*|tg^F^rIi3v=Q5)?Op zgjjcf?x=*5(k+}Ca(z%o%!BT)xvzK=C2t8>VmJ3Q)Q^tLPv~iYGco1X(!81}5@C-& zxq&%3nUm1iQD=FHS=)+YQze+|nmmBTqJ&4?pq@Y^HY0P11b4t~!m2IpD`7H1TF9qw zynY6`=Wr64P~)UR2M4QV@xDxEt9V#M#WNH7>UdbXFmP4krb!rw17+A6nL@0R&F8hh zBF@BaD*7@^q9HxZtx1P#(ZTUDF+eLwbMGD3P>nM~L9Apxv^B&YdpwG&P}X2ZeO1kV zkHN<(5{3LhDnEVr*_((y?k_b)XTb&Q5ev0v&mQ&zhNL`lAw62RaFBM@$2sP4%^E|c zVKUT|C#GRdjJ5$VN-=P=_Bx{*EIi2e^}*%_C6%fZWBU*|s!%J&JA`*84J9JoG?^mp zjslh8vppJHRHVmwq+^}F5?!R@wruT8bEOLkoQaUKXWMXYtbQ!Zdd|y@Ztliv%0u5E7H7mqwE?v zyX@AFJT@jKiwDGqFV!?)$unATd<^Ewhx0ORH;!7_|k3@94S7r-7j8@(hVvoc*!q3P#6_3b!@ zSFWtX9071tIe0n%C8q;NINdbpP;1EHnY!ErczVQ|l<}+te8A^e)HYn635u+OxE+!>y&1bGs)~E|P*uI^!5Sa1tS^FEcU06i{Jn4V{3M6cIMwZf1r!TTx) zvBIZ0)R(Dd#}U?7n3g&~lVt)1FB4_AL?M1$H5s)cb=qZ3cQ(fcbgmVlB`H&|ZmXrL z6XxtQ2^X8Af@-o@H)W4Q+~S~qeo_V#`mn5p&_dT@Xx)%)9--G`v0^3GjfmPrOGV9? z**j`#bLv5ER{}A!+d)<2q06%QJjB$-)O5LS6=ui^Ov-$g4~C@+vPU3N3FlUBPad6< zs!ZfzBPrV=L~oB2^RQ1SA~^Z9qfi>n6d0A9=qXIZCi3F2;Fa~oMk}QPx(+5f47ss< z8E!m=nPx3*c&o>x*b*Ak2~Hwa3=`WH(zc0n$EPl{>|eLf|W}OR)Is zL}%@E=u687kBlfNJyycL9&GvUToxk@1~=#ZIJa-~K!lgE!9~-{$iB+a3a{h`jH*;F zcSvDLbqFd8OD^$dN*W&t*GMRz5BJOS=c>wRP6b&@j>I=+hx;<+3U<`Ewt^S(kn3jV z>da<_<2MqG?B3O^O_Z%NL^ds>#CF6ZG2M$M4?|fGlqH`%2~h7qonhM(_F4grB6~nS zxC0v$9$-Y~p=^3{M-b|-LX)XO*3;=7W4OucC(b2&G+*Qnq=YRC9WCpiwP09LR?-P=I|m4gRz)!Hy}j*YGbULc3{2A#W=i%*r-sG_^}VM zW0bP@q0%EoXv#4fofz%d)@z1AE7^l#m2MjgRz7Q8V%_byERTG zDiNwHF7Zhm)3y56o!y4Z`NNRA(qTm@#fvH?bW3C9gV-u9RtF}l1KOtvhe2*^uvF=v z#9N<=09|+`LM~IJ1nodw*w~>E37?#~RqU?x;mJxhJ(^2nkArCGD)BH+C=ZOJOY8e>Ac9o`$OOhDr8Tgb8_ z;C7tl%(8Ef=tYJ-9Fqeb9FdlO5<)55hq(l+QC*JQH%YSQ;Tba0(rQ+qHDK-W*MaP| zR{+XDiLSJz9%HI5S)3|Rn6l!qtv=@-1`aeb=a8I$jJbEZwqI7te26XgWsTY z*gVj$uCV(CR=0Kdrr|vm?ztR=O=ZuW6mHGFY!W5U>6anPT3`argQf}fo$1ZwcBMD= z%pKVwt6m)Ppn`=>z{-j%07#cC}TAjX(@;A*uDcdAirbuj{4=#yn!CY@Qs(aQFj7a5qO)6&Z$ z#Y06Lg~66H&U0|F&-_qyb#IaxQ$fBHi=j#y2Oedzh!GRogUTi zP^ww*<6Se*z18Dzv!iNjc~1{0rtu;U&B=~{9dEgFYLakcMO(N-B`Z*vuyc>f^AnmBOJzIi6Rah6#{k$SpwJOL`AN!io|1kDHoAbux9@$rBtw)(z(2 zTp7ied1b(=8e=h;uqRw>6~joe)_~xJgJp|59GHxi<2A7Z7;!XO>Nl7Xi&Eu?6@q#$ zwD0sD9Cj)4hhgBBF^&l>TIx6+8^iVzQoHilxR*z(aHEYB1jt`FO_0JxIws@_e8+lC zEnPcPnl(4hluUO^(=yQ{9svQVnC*D7gl@a6esi3@*IP7>Y98Tqqf?NVii(SgnNeA~ zRWJ|w)t2KXIzBgzJ9boG$qq-{^!%RA9mBGatV!pDV60Qiy$6QrVu!Ja7Sz8vjEfhV zhe!g+p1Tgdst`*8ZaC80nk?dA2KMT#Q6lDUYK#Hib5VHP6hH%n6kGryNV!T7b*68$1}Fl!<8=10qz=}{6T2MPeXr^;LGMLOZW ze70Pwlnzv>jn}T}pxaC<+KQMPJ2~CEMg_Xnb`t1uUa?2E*o)L$c09MHCuB>y0wZAp z{y&G)wvE#vujRw(zs$t=@s2uC)nt2=q!m$b*rGiR#xD4E<`+y-_~jI;43M3<<0E|P zggXKi#VTc0tWN=I&g&%Wbe+C|5m?lrB9{qR6>uQx7%o}#$whrXc2r*vNDbCX51l6m z|I4T}L$GD*x-|R)`3l~peN+~f4$GWPi4M9d&_35EX7R;wfa!ZnL|{zSdeC$#g%>AW zJ$X1+HpbfCNe`l>$tiH2SXUygkT((D$I{Uz@r^zOZ!Su$l}XQDp6W>LOlj${<|kC) zl5u3^JT!kO7ja6i|&g+qCkkiAYzx$>RUWjoEVS=F`f~qO36)1J9~paB>u{ zU4!7kMnflyPuDt0_bt7)ujk$5m_nmy#YMLZ}qg$(0N zj`$85S$&2i&!F?A6KJ8FwfvDnT-xlSAN1?M%s}q!yC4w#*VVIn;8Dy#Tu;Aiao{JO_wF1 zo+j&}YKRhLQCGgqmUi5@Rgh&VY1ymr z-!H{Ai-*9B4`TwvVRW%Mtc9MXgJf}y zU~99CW5OO?k~jv(r(>*O@X_-QiMFgR9?>XQg^kG~Hk=(y$0H&=Cg;xdmYZH1*gI@i z9IOhh%4xsqT_$^r4!cEI>A-%sP-~u*wBvNYS$7rL+JigfC|b&u21HO+(wH^C3U+&y zi!<0AJSithFnZzmR`jId!VVcYpj`sm@ut$)aXVy%^*K%3fU^`3Z8fa6yhpS2-mMHz z>U?e2=-za1(RAC8#=sV2-KWa!UgdC8mE<{3>)3;+1!OAZ4xlOA+jbY7vaIAb3+Td( znXiIC0LqvpAVNtGn1d5?cVutjB=qtg7@07DE%_7N484{X3OmdSq9t}dap74v zV@It3y&|k?2$PM%;U7GK$rJ7JF6!7ph9)6QI;0<8^Y(+tSVF%%7=r2?Fqalt>vA2| z)0wo+Qc_rH%ZasqJdKw-q}70(M7?H*$s9*hNA7ytfq^ zmUdcS=}4|Wcg)c%!wj>l_!y0+%S7yvGyy%5mj|?nC~jsui3GrzQ-m)Mi#v)uFxZTS zNK0%R;`!8VZFZ0@#fVHoOUrSFqxuO%Whqq<)3ts$QiV`@##0o z-aG~Rqge)LXW6QsMN5;ddv+Q25xApguj)V`S1HWmi*L7sT# zV~8Hx)lSw5&0Zr}u`H@#?1?=CWj!J0lAQSE_bjO0AtM!x|6DP9+?iZ4?+TxB)Y5tl zJY&3ylJ|!gSGP{{`Z+jHXwx85(CZ)BBOWLgbm{s$4lEQb84lthTSQyMdFM3Q4wvIJ zDNJI{BZy5=r62V16|7ln&>;@ishrw)W`Whokzy}g>K=B~O6klf^lvCUSfv}rGr4&1 zMhq$8qjoJG7e~Gw7FsiS$`Jb=T7c~vngCp_GXY_^!tFcefnhQ(n29#L@| z0Vy4JZY>p~?{`=peToGV91p+L-dtk&-I>5jeDO@hiujUO6<_?S;F`r3xXSo~R~28} znn0+8PzkXme6I`#Rd81U#svOKNUb8rn5Tqs#6W4HtUR!f;LBk+-~^1clu*Jq!SYf^ z38^r91S^Mf)HOB@Gnb&LIR?5Wg;G+$(zA$BtA3aKYJDU2IH)Ot(gNtiHkq`wjPOmU zEr>Fil86=~2?z+VYp zZPW2brHpZ4;Q2AsONr8Qz`ob5S64NbUoSbt%&1YJJB@GZ;UK8)j~$J9wZyT<(x{Vi zLb)E5`-2w8ST}pPigvKi)zyvVXbHp4FE9>EZf_e{DmjD`CrZT|bCV->OZ9kSU$NEf z38vNZN;PT8D5yVxKTRv^;<#fBC7z>5m&e{D9c+!dDh9d^0*^E^eE?y?18PXxij&r; zy&sT$GzeNMxFf#0svmc-l5kf$y3_cMAh!RJgVJXAL<+b%?(BJOd1{(>;{f{S^(Z}y z61&l|3hF0aT8g~`Yz3M?34kfW}~poF`!MSbSdsCjO;f|6*5)s8`w%MpA4`ODzN z%$(Q*`il6rnAUPV!c$vksB`iD5vh|nu0~LcynUHM32y+NxfR~>s6^cQAKwW4MUu7G_br_WG#&tL7&ftsD-O@5(L=vDh!x0eKZq=nCJ*bmh zSCL-f)FFg+1FK9OJv#Gc|7rS3TNve%%Xs zl%nrPKm|1j#{gPCZ;!O9D3pK)^OMNE3g6~rzf(gRR*c(DV}38%l@$yd z0|+y(ac;A+*C=DLw`W#C9-P)KuCHMjWwM`)#pJ;;l)oKqD`Pfb@8g9-NZE_nKJ-We z_oQ_dv=X_lQ>cwNcd$pskk*9~bqcZEd3Y7R>({M}^J{5y`HY&7M!h#K6mYzGM&tQ$ z+_8sPzugLsl>+kF_nMESk23^mHO|*POx?i#s_Ey~hq)h*StrEx)R-3gSO zwdi9V#s!1m6LC4Gtio4jb0QgoxaWLRpP#K{zDZn#C(G-pZ>XUGq_ z6d0E_Vz_fCtvD?$#-+M_oXa`qcxAMvjh8l~jU%~s92u9Ni5FhEGhTZp%(`A!W#`0> zgQxX+eCjcG4Dnjm8LQ4zvTldFdNEctqyt#E6Yis8r>O$tQv22~{YD?6!@ytARXJzuh zonMX3uRdQ7D9|$_N7V0Da=V6MVv7hdk_{?y=1|DSft~qB}lo(RDl6#1qIuKwP{U+ z_1b)!PU><}p>6M?$hCLgqD9E@%lSVlJ#Aa4p7FnkGg7opPpI=bXHqVzjcL&OoPk&} z+ue{CGx#LpnNA7RRB%OPEO%4%I+A(Wca&kVqb}n7M|x?Y4&q9CnzM%HbOAbC&8B6* z6(m}|fD+Eu4WJ&*$*|oPYx_IeFqf(Y+S;*ufHQ(xF^pWC`8Z~@r5P2wf*Ou|7t8V7 zE~Jqr^2Hq;YBBX;2Gn@11?dyaIvJF2ucX|Zx>VAxEu2x*LkpWNR10j{J#Ad!mGP*x zx}aTdTfnee z)^8)OjK>P|tT>$*6?>r7`!SCV<8Kf?iCy4g0@An-VXl*gag9Saavn+IUTsc-mZG#z z&oNPHo$G0h%2>45&sU=7Z^pOQ-z2k;yRN>{8uea0HQV)`sZRP@Y%fz>dYbLm-Y3n4 z+O>$9%XJ@TP0lH5UKx2jdiG6c@|<*_Wx6++i*lvsP>ye}kA)+TjSwoH#N&H_=? z>e>zVSijnC`@#PcwNv^zzRUP7y~X3umH4*(6_6`i+F%(>-G1iE*<2h0s9~44(f07b zXQ$C%b^_U=8BmeDjMIjREl5{D0O=rd@zvBj{?CyybG7tOHH_VG=)=z)aNfS6P&N^Z3u;TJ1A;1ORD>2TvYXGG&Qdu*j-a1O1s8Cf z5~@%%tQ}{$Kp&^_F`*F;X(6mlJUzW}Sm8hka&uDWgvUjy7`RjSvPre#N0HRCImN0r zO%r2FepK`%HLERx^%@P|G(u%bFs|RyX+zNS)N#~oyxKaB`ZuBW0&-W%8c|Cdsq@TT zQ}3_kTrH`Z3sl%0b&h3LfRC=#D3`0DCXY$ASAvK)2@y0NyzXcY^v)(}y75e1LsdK1 z>+n@`>8L$`a@YrIHccfOzX(ST!Znr0C{^<~z0&}*CYbr|kmB@$siH1sHFEDz*MYHc z($2$Im0@o6!Y~vk?w(q%cqO!q(vqNsoYF0$F3EutdU{+VinT1XYI)IaWs#LSC0<_! z`OTbkR&{{8oDOLG6l5V#D^T9Lz4=%s4Rz`|jwIK>Qd9TVHtYZ2>M8f!N75@Wu2^b? zLrwj!|J&qcK%6%E8i>2Rc3Ad6Qu;9_daZ#t40(vja8xNh@YvjO=|R1{VULbZ$cH^T zw9(HR>D;g}C_y&H%`k>A9ujVu_?QDE-aC$J^(Dv8Wf(`ycR6Ud5aD$QUx)=k404o& z+Q7%Mgw~`e5`CXS8dVI9Ce>+Udd;bB867d?k0DJ8KYfb@MT}~x81nQ{rwoAPUg!&Of)wdnj5y@GLNyCtI z_96#M_4b*%!dqrN<{)yhKl?xt^}&!*YwPh-sB^ne6G!=^oV0XVv6ANkZ=NR9uBw%( zG|H)^*sJ>0YwNLl(e53Rhdj{zF#=lAe;ey@SrVyXkJwX59C!U92ffmV-Pp*j&qs=A zK9m2H8Me{OM;h7eW6_!o#yE5K<4@vg%J8aTjOW|V_#>ZyxM-`c#7f%n6p&O0r# z?gVvqtQdnUv6uRw3psC#&Z;ZbJ3}?#HYwGW=rl^SXDL-T^6artFXat2TwTli9YUqs zcbw^lMEmrDM-92_+TzMy6Wlufr=T~fJ-boE9`tyV9P?_edo}ftHrKeAqhap)SGlWD zu*}a67_i!#M1x5CT}vRHi!k~^4x-vJux$?j7Zx@aeRnjDSc2E!aci;{49w-ma^IW# zxb%S#Lz_^)JGHfjmH2@Ae)m$+Sgde?;L>Ne)$wecjfFde5pDt6ZLS$dw$iC@FCVol zULQELSzPPr(d#IC!3hV;zE{_%vr*B6T~qJ-pDCI?UGIXQODcN1U6$B9J+mZm>8aBH zGc?WEt5?u-eF#6gJLt!E854zR?hd14VxlWU&7*mLB^Cj1QghWT94o!^#_!C&IrHGQ zPp{l}>F4kM-U{W5D#IT&jBo&8{vrlj2+Tm#G+J6DHX*PNs7vreifWtsVh~7eQ}33` z^l@Lv2qP_wtiEs{k|iPK=VeJ)v6lJMpG0w{8I1ajmL)C0MQu@Ifii<;AcW+5{Xu|mt6?lt zt;`EpAnDwp}wry|N^5dXocZrn~l)70xbxJP5&%oDSDzETsGU=!-CTu_RZ2L?ZEKOGTO~x z7>sW5=`z3#UpQ(m0P7YQC}5egN<>1~oD=mg@G}MJzCg&F7YKulc}6?Q2#13TZTQh# z>7j?`L^X%*41@nH{MTr~!{~T4@FZZ{^z-e}0HU0vB}kY*{UaoxdkjRAbynxzDK)e} zoFZsEC^p)9aMRur3PvK4w&}q9sb|}!BNWu>fWXL{kRLI)#cysnY9NIFb3!59E-{xz z!Vwd~Xe?-_0NNj=d8cV_cRf2*Ow5NBi- z_!HF9jxna%ZU{ptrdPC0Uk-9n#p3z5EY$@qm-eopG%Gf?>FSku^Uh0c*EDK*k z90V`7i2SsmP%tRq4?+YeuDIYoM!+pGvt`Mgkh!RBdLOclv=tzVI!I>TlE5&Vo-~#$ zvZR4w5rtcl5Csk$O2Puw7V<-aURpGN`Ub-kI7>L#7v|_dLcTEatGaa7%bu)yR-!?Ld=r+x9mcO_8iPlN5*-$kn!~)A)}xt<*ryN%lqybefbt^^ny4ZuV{13{oX8F@@|$=TF}x zWZxvEJt}w)b08HkqRhFWK$!hEe|ibZ0*PTtMT=0jOtmx5^pXIzFt}i`kR7*=^M+w* zTI8P>3bkXvEpD4$I)8e3*la`ZeG3d&@5GrAip@jd)k!K0FoDehcjTrWmv-EV61j~6 zGWD=l(7X6_IVfa&#a&m)G49(MnVE%p#1IV!%Mq=9=+otYBUfhGGTXKdk zg7YT~$lSA(vk2-$pGnnI&w}kxRUE>|IR6&P1VS&#WqLh3MZ;Sr+4fr|rPFVjM2P*2 z@=SDTBr*%#6$wMRvfvR-rpqgyyk#Td3Ngu@uky2W-tvjO?swmk){0aTm#rxu6i zHp^L)=WCcvMOa$R@KZN0c;(Bhp4~NdLS3wse@dylU`Pf{0Nf9yVx7vbU~3vG^z?7` zJn@lJKlxzCZGS%RBfp*d{11Qo`WN2ww*T}UDcst7_j{N9#Z~|IN2k8^%;V4g(bqRD zSZ>}iyS(MsQ}2Jv6Q_^1zUOa4M+Ywd;hL8B{(Ins@BeW5V;}zU4__L)zIV?19)IBO z%WfE5`RBQnOMmkZS66Q+t@^=BZ@%%P^Pc#Ft1nsd&bD~2J$m@D_pR%@?(6TnZaXYp zz4yS4oU&|jRIuTZ!n&;@D?V<2@YI0bptH{%XuI9sXsO?nNukU+-lIQDyf-`tN_V_{ zZg^R3B6kPrjpvpGx9sYY>(AV_*XHIyCw;)}yxIi!R7^!}vy+-1%ySPjkyP#i=>scV zr*ZL9QJY?U0k!A)eus?SgH{!_;nmmZJ@(i@2eVOI5u7yE; z?2`{Ipf_sIrMa77=goYGeWCVF(5peugFY^BiH@W@f;*3^6py&rJDZ+ETlHx5f)%Yt zs28mzjR>q#KcCbjckKfa=hWxc&n=*}bhx16jp9#F4;tmHg)AhlNGlMCTqu#m2R*7_6q?Y1CmPmcSD z#~klC3hGCQ=FrPQrtuu;#jeX^=EM4zG(+M!o7xlTQ7@YA*IJ=pcIKxWX1N?}p+0w? z{yB%Y+{>ppVBkXDP!_xc;GAZWYt$OOZLd#^zPi)ve)_C~`iZg@o#tkLyX!WF?nXmm{w+_3PbfI?D z?d+a$7U#`XFV-)TKYBuh9d`5EA;f)?e7TYxWc1PMd7Lt=|Abws-E+z$Byy%w# zP+r_aw{}jy!btGLTMf`k5CwPx2L~2n%Fkiv=aBIS8QMc|2O|B?cL4mD;3a~e68skd z56AlF5F8+vh2c(D)P+v}_7(Xq%d*yZ97Cry2SI!SlSmlcAHo z;L;ZSB8ZuWdv^)1i+sWP*Wk!9(E@XGKlXdkb*9THi5GU z<487IU6Njqx`W*F>lZ;!NN4-Ns;)*j*R9x(JJqFKyM4D>*uUAkTm z^Vz~29hPRE1QXiEgla%Y_{#$I*2-rooFkJ+D7FH0vt!V7clZQZ5V;N&n0L!l`gA%I>mT1ii^ zerjof3egem5m19+I*n5RxGr6SvRcsP5U9@i(;r4{dSC@Gf)*mpY;S?GXm7ir6+5K( z{c4VaLmfiWmJ2WCPB+Fs)k!-dT3co*Y%ssv9)ZG|4YLIFW4kgGVR)L|ig1exS@9sU zMQ(MH+|EK#OwM7GSqHHLF;{VWo{^BYcF@necJQCq)`*p-9nx&&fmqIk`y8o}mUikD z=Z-h+AV<A_zLsz_+7Oyj6Y#L|OUTfvRglqubGwnkLo*X7C1*0u2f6 zhs~CGI=uzqIb<-ZX$K0XLo|)@L?)3w3KV7ua8hAAoh(I(hyX3T4K0P%vx4nto#3=G z)*jIhFTqI;lSdT7QEO_!{u8FT5N|QXL7q7(mTCU!jY)&PLMAbd#RZGae8A?Cqo30rwh2E=wiiL>x) z5$rF9vHuS1f3O9;|Nsn`Nj#uDEI>g{K@1waha8 z_-;JDKeqmhJnB3{EpomP5sjD1czve+6r8%iQ0F;GfAf)OM}J~CDlcT`_Xd<&XQ(Uw z=48}C@#gM`M)6YYsJ!*E62)sr`PSGmtTN^sYR(*`_-LxsUA=jDhT(dg6W*uIqNB*hv(OkB}X@>pfZg6gqp=PJ_ z7en~fOaE{g-_({^yww)pOi30;OUJBOvRnFv?CwraKX!z1kJe=*Eqi_1X0sIw6m_)tfe7)L0qbzl`^i+jZh4pd7Yb4fEe%tegKk zzwUo;=`C-)fA}+>Ik|rCFHhbv@8CnL{z&QG(3AgW&OZ6+d*cBmp-Sx(o zz=ThuzBi+)X+j?KFA#nOcvHCFituNVk8AN?;g<*i z;NLo=zX%rtcIN)uueU=nS8_MyzxRf_^Ut3BOfR{+8re7e_ug}tM%L~BGcTx{Vo}=7 z>V0dT*T<#b6xr;#`n0&z?47)e(Q`L87R8sO@YzQFGK2qbuZB#ZimlD6aGy&*+q*MQ zpopGkMR<1;U+rrGzko`uas= z+|pRT?eRVP8%BBZugS30vh%yW>hyjT<%pu|xYj%6x-Z>LL~^Lv+kU@|LX5@w!?Z_o zQT=gD*k3nI;_F;v9Y$17xY4mvt`f!f0;1N(zJQY9i}}xh!LNY}#s%?AQSxT+(SS-N znu%r$_$JGkRd$DQpJBcK*!s*zG+&99@Rn=4GN6`?IgUPc|o`8!(H(xngPZ;CP3z?^1brG}2euADFo^YJF+p(y0EROEhb7Vl)@U+n~pyNAcb0 zsJu14SdHqBZ#X2|pQP+CR>q1^`Iz7T+uobNQ`NQq!{;2woFPIPkIeHvW<{BYWS)!6 zL&gkcN;slYhGZTxi;^*=kW7`5DMciismw|$^{#zH>h6A?`+c9^{keb7`~PnroVCy1 zYrNLAuHn1Zh4HWjQBAl%2tSPmE1@RSMe*r#M9Ml2yE+`2^WH06NnAsfj@xW1(}1<-^fiEX|$!1-$?|2-u6#b z-EuDXdhPI!Z07QtI{9qL)*29-yAWJg4F0|KEPh+qFIoO*!f&63dvQzEgpnd}PvD0R z?kv0lhH-#{pxOz7zOcu@;b6Tm_8Wl>g^@8xBYap1xO4FDftWeg7zYsJ1V0Fyp$uR$ z`5s$S7y}pbBaNq~?^D;t9!w;A3<%?f!Dj>_gt*#mkdrWGJz@-?Q+TlOG3N!>O9kVz zo)$(zaPBaZu*dwxHYmeye5dR`FeFe<{M-N&Nkc^Ed*6V$`f~wbCi@%0bOB^yvejejF6d1SfL7CvzMVsX^5? zj8=|##!-r-R(V$crjZN>R!;0dilb@f<+Ip~tJaguH-;(8OGY$~2>WRF^`z`mB0FEZ zmNd~Nn|PgS#@D5k?d^ep+DmbaD`aJ|hqv`e!@e~{$axRgqldRpFauF-DievA3Pl3w zsIoyOIz-zj=9Kzr2er6<(km(8YlO-ka|Lrt*veoo0YT>8=0G8{cknZ}IqGf>xT^X0 zIc2GBD6HV_ucT`vtZ(lMhcY$)6Ls_ZLS(+hpY?AZ6+UKX16TPUy9Bf0o>;$B;m??j z)X)E=w>$?npn=s>+0_-q*#>wsSdX>07q)YSot{9G;{th515YS^9AN7OTmnQvMgi{& z``>#ZVfQv-Cm^Gr>xeh#0FcBV@59fjgJ08oNW?M_@iwkyG%y4qi~;(_68wcX)xsOG z*H6EJHzUKFVBxC{J@*yv9U=r8L4YW=#oq*fVBHtK;4Fa*{?nxlQb>?1EL^GrDH{ek zXaI>HK9dB#IPq`&KvJzAC$o+K#Xo>3LmPsOk)Td6ybYG-9e<7lxU*1MNW@{D;ecFD<-A0jnl3A_RsS z!RJoGde+9Nj~h5wVCuuyaie$OJ-8ss8NRJBXyiv<{HJx^gP;I)-YDm1OdVWjaRBas zPlpplNPr(KLI!+>00INP91tAfU3lbRARvsPfg#dATKu2XZ3DUimxDuyfN~CkG92+G zzz63-_cSDs5^|;hrzuVP%~JWgX`pr zr!ZiIMoa3tA`zs7wa@hykjz1@Af_q(R>H;JyU7BLn`z z--v-vHsBj+@Qoz+h2O-2HzDv}6nqb?%fJtS1T}zxKrloLKJgMhTkm&mg@I!*Y7OQK z|CLu3@DhNEn*t;9|Goat>w#o=p+%t(5N`hkB2xYc^@tS;Brz%rw?7En@<$<&SaOJz zh){r%0L4g%fDRIo2@oOCNSqW3iO$*w$wCZU?odIb1V}^{ItLYkfY`UZhu+an6W?P# zHy0cH#pRv02hIJ8ewvkgAH3 zD3%N2SZ@*YZ(H=;{|4cZySMf*k`O_FLs9{P0N5%V5{bxpW|Fab=NwaOrFDu$LPKBb z8e?ehOKw~~(`X}>qA`VF+j#J5} zR)}w5XU;zTRyI4koPjv;c7~mWgZ-ybv%uXOSL5Sl_{Y?gg<1B@)?KI{ zO}MB*py)OD%rw~bTSdoUlmO*Z7DS&^{YNbHAt=|V;;l<73Q#mM7l$MTJwgbvfG%aB zMAM^pu)YxR=R1^3`8Zel7I*V#KMDGgE1rf}IM6#G`j8zQ;vZk=s~#hpk^g++bEQC8 zlSCyIWC*{{hSq{KA&o4xER_f)C*UjIBO+q!gkGBp??gLSTw!@#JfkrfSo#>Qd9OPuj`pc{8p38tmE? zot08#MJsNIOmQ+4t$lpT9s<}TfYC8UA&92sEXIf z5o*#t^ny$_!Ex&ZyD2o=J{y?XUm677G#7nW6vn#I-7^jPvub%?lQe6+sik2?v|6gX6C8d z)H=fmnW6=03Hk|^;?E^6FG-=fYStmwj|WnXlGGn^oU1hB5wA8_Em97HHKOchF;<_MdiPc3YZ#21U-=GhMz#!pwK-Qr%*Z;tA>9J%J~et8aT= zZi-*VMM&TZeCkkQp9~|ybGhzbJ$Gb8#*$khneo-_3Dt1F8a+{z+Pkq;wmP)l@d=u= z6K}(lcI+n0rd_e#U`*Dar!0OqQ3g@iCf!C ziUZ&=z<~V30UvLldenV`-W1s?B`iiyfBRr685?8_7s`g#fdCK80z5E6<^L521jGzT z8Bnn$BrPO{6#_I1;d$Vp4F&~xpf&`!;6@toz2mVRkKEF&|Ji~JtGal`wWx>d= zx=p{*9awR!Wnkbd#Y8@m&Ovy-CEXe5NU0=(ir8Hve0sq<@HYv+;Wq2bMeCpK?3VMjB|6v z!{~bepUaj=x0uZsrFgLnf~3W;qM`r{A_};f==Y>3oct#l?Z1<)D!k0hcR_abEU8u) zjAF_O1J`{_&pp~6FT8R2nnX|idT5VN7~?IGEYWx0UNtIeb3F4x3`m%eoqJS*(O8~$ zD%R4B%CGa+^h{GD?qA~?$~b#Cv5uKVix0s}dG2P2cH#nDCCHepG(NQIY;#fU5@j!F&liyEANdywi7=Dd7tF0%`qo3fT(rvhEv1Nip~lKv%i}W#_X_nYT_^wgcv=XX z%h7gHH#vmeqF7Gk;GLX8p=T^*@uvY4QlzOXbmI~u_zE?aG!I&Z)c&Yy>4zBCd~%(6J5{qaKf zqbb__i`oyFx?{W&_&wdy7(X)48$5Sx+x^X)Fxu(X0X($zC z5zFQNk{+C>`-curnHYv8F-)biH4ihUOIjufbBp{*Rb(ar(fbu z^HvFZ%fU-58qq>`uZt@)&r;JdA}j_a4zsr>KOmhAr@Wx!MoFtJcal#%-K%TK^-;sS zW4R`ACPDF0Sxo8#hgLdr9m#z1C1-?07#>b|Nzp8Ol*>BeR`n~Q#OUo=DI*7|U)e2t zw5#?!WtjGFM&Ee)S#XFg@^UfRXIdWl>tn0KMZu~y#8ztdR`S|qitn^%Do^Nqsr$Dc6fQWuw;BezvuG=O;?9sD@m*Qk1;& zx1(u^Bh-b|H>7k)o;S%sI3i-ezvnjiH@y>V`a&R>{|WvLNkQTeVBivBkPOVfvG}AI z1SkJFegEHa@62r1@}U9sIR29^!n=m+Mn+pw^f+{{w-4^r=A@eKy3%# zGbrQJspm|`OiU|m|6jxP|B~(w`kFc^vdNr4S#ogt#&zF;c7HuB zWVx`9=V7;PwAb422F6qi_t4~AaI>j4K|R*S(CVfP2FQjjA$1!uY~GsnRG{?7Cp*0Hs<^3lh0%Jj}SA8uC`$hoWRNnc#%JRb4>1AI2r9w zBbjydd~Y?wTkZ3~EfNApa_isL29YZU_854v&q9xC{OrvSBN@ncP+{Mkb;(?JeXiZn+UA70+g z-l;S#FkQ2(-X_@7CmM2)n_r#N^3WUOxq??I8ISgO)P?f+5N)45!Cs$+Yv3`wS?(-% zF8hS_4fkx?g8Hj!^E4i7k)o~@Ux)M_Uf^hTsLNnELt}@M6Dl=}sUBk=uPS?Fd&AF= zutz~yw>Z8m-|t#wR^oBS7jb83kM9-{EhKTzI(&hvK5OpuBlhQSS#?@dXEk20AniTQ zkq13I`f$Si&6T8fEZ;ZEmc!3(# zu9-8s>~Wuun=tKl^OxTR@T7Pgx}H6O>Wm zwjOW#yB>2ri{WMpB)i*EH9uPV!IARp-kD2kBe=%Hw+#8^cF2+BCssV^lu_oT_PLa) z-Fn1Ha+ObruPP;F+;D6LElG{SMrpD)Ena)Ip!mO@Vx{jeLPhfG7KJT4vu*WP2>-e%JL| znaM4JZ}b(sC{JQD?mx&0x`snxwJ1z0)xnhfMjha1@t- z*uEWz?W;fR%!ueS7xPRQEg$W}%kR-!N0l5@>D1q1%jJc*fqVwsWo$oeG{4%JF~By5 zUH6({u~;c!UX~HXu6xZyHr2joYB9(YxO5Ibs~~a@yHZ9Qr`da08j2aPs`^Ji&?cd;LFfZ1ay<(jSsXGB@5Q z$arhk;XU2wDU&we&SfUl-Fld8?$mQpN(&zv^t;Pwg8~)f!J%7ZG zdTjMA&;7;MB%KtCj`#W&MLwVFr&}$d+J{IY?jqlJtjG77m!Cp1aWz9*PPyf~x+Pu5 z+}`;4?(;@51_cS1CMp~{TBV%EY#(%N$oe5b)<3y!7~z85T$}WMkOaA5svy{Ec)s@V z`Ah{}_tofywi#FH6_o>>ku`ta@GJ&FSWy8RNCL8zw3iZ+k`%`ZiHl<$glufZt$_(z zTpDXHj+L;3q<=EjsJq*Z>k>Z2U1gAx+Fj*V_~AGsE49Cf&xpQ@0ur!S-11f}QvsXi@npnyAw)OhOU z4A=31d^P<-R!w??rCF-fCUgQ{1MYO5G4@MVRODd`hO2A3peic|O6gm!B0I;noLj66oVO{n&n zjD1l;1HnjK>+NgZCS+G%>XQo_^W=^sCz(Xo7MZzo#zo^sNWF0{B*NM^{H; zDIv3N^^wFUu>ev5tUmwrvV}wa5f*`hVG$?*ivV-(+WaRkYG&ce{O!)1inro) zExoLfKJ9d*dnnDIf=sZf^hJ?CNdReSZ=%^FD@MX;hZ9qx`rI@klh;UeJ1UiLS@bmv z6CA(hwDj0*X^(j}{j%zv*V1;y?sgJ>1zEOKLQmx{eH?v7O!3UzKVO4ylHzU_t?%7< zxw+4y0*9#Cw2XOk0=!<+?75|Jq;F0;Q6z>2^KrWgClFIY^S(>cw!m@Q&97Q0ud zM9j41*1oTzPb&%J$}39aq)&Bcgb2RZHonL%!PO+=ZWn9-Ho#ur#c}%a@*RSRs1?ik zPW}1|@n>r9vHNgY?&Q7M#=|Skl`L~Wvg2fVTnRJBl_H0C)@;thyc!vnXGgd!p0aE1 z({HXa+0RKZ-xY9J1m*&T8e8 zDq{^zUIDMYCOL=dRa08#8ktQ7!lK@3X+T%5MGw6@oLTy1u*_kkAt^L)=J|}~qz2y= zTHb;yL5?94kv4vo6(Xm5P14QleR+8oX55;1V+3R5rF0sG!Cq_wb0NZqF+cDldpEW@kI+RKS$wW?XJ$=$D?pS`eY`~qHo; zf8llb$uRZ@p9qXn+CZ3i3GG2)W0h|2Ak-dybL9cHi{qR)bO?Tc4GmTzNGD4xOEW^_ zulppx^ab-4xD9}JZF8}+gv2aGMe&Q>k&VR-EOz>kE~LGY28*5IU-M4YBVF!fk0YPM@5F6SDaC^ShX8*s_rxbw8AxI2N{iFJ?(q;MJGC zoplm(?p!6~r93m8gG-d9DZEL^T9k6+izMfsvo(qC9GPzsYCnAWhK3B;eX_>;*GtAL zUJTHk)l)H*7WL#|3@%^h`S?n359Vlch1oeLcaJN#e46A5i3*VXy!&wbX|){4?^SBO zAC3uT_Mi(=xpHD$p5H#V$wJ>IqKU;;GAUxHf9c~QeRe9(@RR(c&RGjvh0(*r>1Xy4 z`4V*zl^88j4cTYYOgxRX)m82(wx*ppOctW{NzvHdXpCgOYmOaf#!K$Q zBqjT-ySo~^U3kQ1uK6kt)LnR0$sF|mM>Cs@Hman$%zs{J%39aeiIa9`C3kCH%-dYe ziFbmvzVm1Oj~@=4H@?&1RmP8^KE=}fMxV<(0X2tfkM-3Xzo=T%K}{CJtX!|~pi!08 zTF_2#BwM(ks9IVzCp37fN;;iaJDWwF%&uxUle~#ZNjY8pMYzcIlwkF;5;T#+yEROy zO~7;xcVD#qJj)x0>mP|j52~uybcjCc-=qAIjjTwpR=cfl!8|o8ZGypOI7PkUQIPD7 zd5ydGNp6sqM*BmTo>(88%3PrnG-lWNTIpe~6W^YsImxbD9ieqqDzd9`5XmxQsO5R_ z;3o~s$Rpn8bIDgT{bPuj_$Labkp}ZTh4R@r+5-@dR&`S&Bp?9h6Iw}dPjr(!VDkwr z2e`$CLK6JZe1b#D5s`0DC5QmUdFw=#$ovSvjOkwP1Djw4u_rUae|rl1jzFOU2KsM3k{IR?LXxJQtvd}^*!bIpA` z^-+1@VgNrGcD`Sm=;F<@Bob48%w^LlPh=-Wlihit%*Uh;eLrS@K{vc(bl zbR?n9ZmkX5&;;nIk$)))KeOFq9*K=zQVKk&%G4s}bST`-=wAVF{<cS0_}Ig}?WsGP|5K>prl<|o6Qb<$`F9!b)Kn?#SZy*9^;YDB=1r?eAg~mal zF+WMcp^)6B5Q_vb({=RtA1zF}ni}gOu#&EUh@HKIH8?@`FUY{~vFJZ!V0eEde5A*} zm4S&T&gxN&+<%?C9~^)xmyw&z?os)+pzS^OZU^B=(brEVZo8n$#ukTG=b`tL^L}*? z3NLewuGY@D7@Cj>=;4%UKHoOD(6($v6M3RdUS1*Xr8&bl^VK5^63Lv#nm%)i)DKJR zgYO3~N(CL-&%Bu8f8e4%qEwoS;k}4|sQrtgDwnYb?H?WmAUrf7WzOBQ9Ww;^i7{q; zwKvz$!^bj35AduRm5O}5IUX%mV`G^*U?M-g(4OKDd*Pe2P4HmL0rHF7BQo!H9q_cx z2xNC_O3%%a{S+LO=p5@;;MP5yzRL1Nx-WkDem+@ZL|)xx#uBt*SanrM+HPq~71y}k zyOrhoQ?_PYQ~|;=CMR+{uM$O4ouj{FeP#RO)ILhJ)R30WCs#V>g2Lv9_j-~JS@(`EIjTNp+RO=5}jF6~*dSM!_tSg3w&<(1bdYZnjSqR_`zNQ-4^-raxPhr8kR zgk`xp9LXB;nduzAp-jc${)ZGsDFJ7^_mWH`3%!YYEhbFE_x_%UArJe?!(#1z-sGJ4^|M=P0stCHm(`d6=J7o|0fCxzjH>@YFKq zmCsoX82;W5+!Bpj+!8qlqgnck*iW9uuRb}yu0H=POW(ScM^YTd9Bpppfs_B8tN*`U zs0xt2gn>;#lqa0(?iYsL#|0vf6_z=l_R=wocDw6{alZRbXi!AWb2x6z$HwKZ&p^23 zfcV1)N6986X*A^3suje|Y~&VbuauA?dAoL)+Oo-%IZ2}X%=)zszrN^6^F^VOqP@W@ zn~wX#Qp(|}*O4XE$FIutE>JF#Heio$1XnKjd3v7Rf}_6x4w`l{CVF&5k>p^Pq-`03p180c`G(NHK8}`=Fk2S>a_{k=3lZn!4e3vWVLz`>(hq zM?X4ww7@wrtX-y}&WLhwA|J4+MPmcKoy`1`GfZyK6MxC!tIa)zW9MeE z*W5L6j^F4>>76*|R}WK3QHQzclO9~VeW-tVDT@hr?COF0s#O6Y%{Gc*E1rk!1i06h zqB+R5=@*$6J0-}J`em1j7%xUPOZdH@F0>`ewF@q;=bbHNrt^!*T50rb>8p-wznbJF zbCAl(PFed=#JJGo3RF3-+}f^s#B=qhLlie=wsFR)?5Iuf-$U@uHbPc>*0VxR*x5f8 zck?Y1qghSq`Sbn@MQaDJi?Ys4bQXK=XX6M?0K+fr@`XZ2v;T_~gd8q1(1srf0|Gk4 z5fO%I&(qzakKgqkIk5Mm_N_D1@3TT1q0sug&{`<;_TM6U|FYHOk9!)m4Gr*n8YQGu zC54o*Dqz!zgt!t`0ODI0*?0devSSSJCro0rti9orT$EfrY+bglIDl!O2oZz3?8Ttn zJE=C*KS*3cN>uF7#tq=cSib@JKzn}Zng9hL2=PN?-!lNVe^^%pn`TL~zJJ)sxc)8U z%}V%N$t~}qu)tHk2}Htcu32Od3H&|*{is#;#%JPe%rEuD?=nI9P5TGedEcuM3a_kv z%f>?QQ5fy>bSWl3v)t#llrhrpp>u5^plooNKGpC5{Re>UOe87Hf?B?FAX zv}^8r7lW{>ShdL`78l>WYuTo4U%1z7B#VwO$*N!b?E#i#F1>~-&9fB8gYpKo95O7^ zj_Ap12K0$7b6v2!M#^CrZ9~6suZjvOCQmv4Qb^HmexiInqS1;>-kJBQ5_4&o;}>6_ zK~!($1mJ!p!0niM5qrP+A+{oa-4jLA-a_k#<_ zm_3Ia=PqZeKIdl{Oe0(n8V=MdPVc%fo~|3wo}QBVQgL6#Je#Q>0P4I4Gj9Pu^Dh0f zdf>Wc?Kfi0&z3b&h;h^00T5~wKN&QjUoB-%51o1@aE39_*=$%iNjd-iNc#>tsr(rU z5-oT8Y${2h0gPTfq_WdM+U7j!cMZU7`40fx=JIlmVtdwawzu5GWbc_Q^4Rm+KP~tAii%w-Un3Wkzb$vzw$b0B`4Z<% zah?{nxu@krG)txqG?;D~l&!VU+RCJcf$8rg(~LK&UaSF>|)9ZYNZz& Z?bUi7`L|w}{ZgH7iR;QV{^~vc{{SmAX$1fP literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Numerics.Vectors.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Numerics.Vectors.dll new file mode 100644 index 0000000000000000000000000000000000000000..a808165accf4b28833d22169931d4c879defd96d GIT binary patch literal 163712 zcmeFa36z}Ibsku#s;;d!{9Qm}B>|8CSwuHU5a0q(649hcEtEtt+*DPdB}y_Rk)lY6 zkYt$vWXM|_o3?B@@pwFmBP*trI8N-?j<+}?#h#JIPAr>3#>>Pb^T^}GIhixbagsSX z$+0}&ckg}6{j1PbM6(r5B8aO0zIVU7y#2oSFa4(B_g89_N~Mnf|HWTaD!+s)|E?Ina1!)|YGn?WUwyDz*&BG%T=z%U1>HjWb(!1^A3Xh$4Ti`5sQdW@p zzy0v)hG)(^^G;-nZ}73wK;pOuu2m{)H#~Ft$)^FNuk^V>$Q>iNyU5P}^;oa?N8hTI znabK9Z>fCa`zn>Ts_v__O?|jox|5upX_Z1@m`^pg}R~o zWbMh`j+nbMQoACxTc{^K3X}Ci*B96Hx+wCQJ;*)8Qq>Q4mJjbaQme54Y^hX=ZJi!^ zNTd2R8mH6wQtg^ARcfnq)yD3puRz9XwRX61c#E`uwX(3aQiD%hex$Z~poaoBR+p;J zK*{@Sy(K4+ugw!bmM30Fi5q?g)m81G zo;ruoD2I4Oopp~?EAzO5SuA&!DlhKGpszg82t2ks<^$zzPx+L=7z;8GdeF&W=$MSp zM|ZXSha4US8p)r94K!x4`~)4_{=~zOpufzAUnBYS2~|>{T0u}G*;qmr%Rkgd!)jD2b#AC)w=qz}If8PI@ZXT}Z!GcQ#mY*?$80|$Kifkq zHqJn_^K84QpF&~LF15UtwNhkk-5PA zcN@#yCbTv#7R^j6B_1qL=5DjFQd4Uq*IMc~LF>)b+FI_mp|y3fXkXkNeWk=h1&ZHo z7ghn(+RC+-x?0eBoLW1}-C1buTr6fYt(17En1$BaVm8%)Yob!`3|e1Ft#ixWd1#%x zSj=C%GWtr1hl_b=oiFB-R@YjkJ{`2)L9GkR-9>0!xL7P^S}E~xu?Ve;#bVOBkk>$I zBm}K%)Vg)KTR`j9i$#&u03{wN3TQ2gB5B>4YxU#jM5l=IDVxV zEe`qTxo)`PNG>MKF}axV#^hqc8k39JW=!r)V{?y=%{_+Pd~PZ&Q3K~SndiA$jpp7m zHuu)Cxwn;UmKHE?lg#s6%bZQgJux=-_OZFIDA_D6Z`V8RWS-|rH=6sZlAh9n=Jk+y zo@<-aBe^F_dP+-}uLCmAb2W2%B=^p-xp$4teRavEU*J|(opv(MbD6onSP zVmJYm!cnSUFB}c(Q#g7sg`>r+s~nE%Qd~;)t~pBsH>gi>>A@727V}O$MN0uH)w`xG zjpv{~1*iv8fLbg%^%N~ds#L#Tq#D$xNcCWfRExr?=Ws8DtW>{V$oltMVQoFfk*p!> z!4$FT|LpEf>qaC3Ov2=FszFGBV^`!w<{A+a)|dG6Qe7@ciHm zygkD6<1_H~3eOMGz`H_tev}FiwXmGmLMaf>YC#sx9mNh`3%XS97_EiK5X-(60&iR` z1m3t>2)uE%5P0KiA@Ii4g78oaJMvm6#qS@n&_ovZoyAUH1-hK?yohn=J3?T9h2tGx z1%bCqc)lYD4=(M@UE->qo!kbOBp}#T?D8&Y2msw>mjYv)OMy4eCE>xPUAar8AY#pG zNrH&o#cuDCh7G$fVkYsmBn+tDovSVd5J9yB5POO}UbTh{dq!0Y1FHArs!Mx>P>~Wm z>@D_s)fz7B9j(Z~7*~;jH?AUu2bcEdE|s)!n>sL#TBEa6$Vsap}Pun zR=r}1>vw0afr)HXt*XFUl&zmM$3*{VnNn-kbyO`;}<^g|v{3r0;?V>qBWh(EfbsI&a z&iSOTly17}wW5=nsFX-v!wm$6o(jF<0k+@6MTinNjAKy9@At{vv{6FpD|8zTu%_ z0sb!(3tHpUKcD;0LFx75a98y&ntqucQCr^vhW9E_b)V|L#QuqF@$FdVS-=#WwhlU^e;R&HXP8a_C36r24m;ei`t~%iSH& zzkCsk5A|=?EA;Pxek@5zzgx>V)_nb7?$-L*Y5HZ*-IsNc(3vRjgFzOri=cJ}2N**^MY13amGc3~C>ohmmf*s2}P!Rx$ozsDX|;v(hOV%OB^g z)1Be1qyxA+RWF(_hZ{%99sv*d8%n=R@w^|F=9x!pA6%eKOdN;09oX!c%{FXymOoB- zx6NBZ2XU9FUd;A68&q)*D4CVm%1;m61h#XtrRfJ|(OP@Dm?I8#7hrb5%+AB?!t%!n z?_#Q0gxPtRT{N?cnOO;D{B0hZb+blkR)Se{fj!-=#nwaJC74|@vjxm9Eq|QwZo#`W z2Qh8bi*BD|q>9@zsk9QX_}eu!TjZscK8WeMqj#QR7DroqI6EBbF2n4yncWVv%gY}p zyt|zP{~&ftb=+f8vpX`g#60BZ0Gf4CeQ6GZS=`>()5Sz^sJk0xcbnN=FuQyCdAQhvp^M?JLziaV)KHq*U>5gJ_H+?n9O_;PvsaqgD`57@ z<&P8Iy<)k$4`#1`*?neqUuKq=hl_nMyRX=n%wCaKa%skcS**N!y8Da$hq_n6>{Vv= z0L)&s{Bgp&2bQ~6!|VZ=z1k}I>dY)Lj}%wK?A689$?SpLte*%^oW`V8`ylS}?CBmX z4j$@W1IyQ#y%v@a!Sc0M;A=C>#Jr`r7M8Cqu1%H?<(7T?a^g`O zr0BHN?G?Q+F>$`QZl!HAQ}?>!x{LL`PS9sD#nm5R#tzIJa$oW+?+!}V&X~npgOar? zW;H|B?wEyQD{4>7YKN@7F{=}@u83K)A?wPRg{f6_VS^nU!%S#-otTH2%JODo9;Ok? zn~QlEw-(t+;t-l9Yhk4C&Voi(diML73!^1t@!^L4gSFfPW z!(6>mtfb0kSoi=lQswjBpk$@W=Z!(hN|n#Mf|8Xge`m-_mCyTuf=ZRon}L#*DxY@( zB`a0_-jJ15K5qgF3sq%RPP;sg9_s6_c`3GWNs(jx1Q`uDcyz$4%U&$-q zuUIF3A7>S|Xss5je$l!fl^+(Z>x=6zN_=ZQ9n*3BLFQq0IF)7;&8F8YS%V){&a;k4%N&2zD2Y3>zyE>@KKgDCa&d8xU&WnE57jn2NOdqZ)9 zUo&q+sl%FiV{xM^HI@xnM4l@(W_8VVrN*SIxvtch6E)YB8uOLrx>Dojj^?^j^ERUR z;7ZNgh%EJud8xU$W~II$ZH?i)r+cJ0;+O23Q0lN`-&EX$Qgf-+R^?9PA?Ddis=2)3 zD7h$g!t#crSa?^YkO)&J(=X21I10@uRoe@k%-T;r;*Rm3gM!_0$g zDVKLJABMSGa&ugwy*XL+Z!K>1tNv{;7gqh-irbty?sy(%o-@ZAoiuk_ZjMWHGIv6I zhAjBUi{pO5KLLwj!9P))aCN^1-H$NO)%~3z*VR35i3--$J#UFV0`E@b-f{U(-mN}p z5y9=n?LH!S1zZae!7GYaxXQR2ir>OKR~fu>`WBdb1ttX93w=`+ha32>CQ-tT_1f}{ z%d+*UWm_L~rp~jM-p=gR=GL2}jf=JZYoB9q@jTXMcYNg6z11MbrEIndvDZ9D#E6)m zu~+w*HO|0ut&25Ildpe{pb<$w>qSYIl53AA7Q-a_!GC zFwMhGVv$_?a$;d<1u2qipHHm0#3H%&Q;9X7SR~heAh8w_i{!CyHXjyKKFMQmw|uOk z!2y!TUT^uBOF}-$V>ekogJY{VlE-#gJ_BUSC;62vhut}ppEC01 zdGj$KHWtae`4|`*i)7w>I}?j!-h2#{O^RgRd<>Y4MKW(b2F}JJnKvH;Xk(Ggn~!m{ zu}J34$8g$MBxCb2q_%vLvHA9=e3G&G4y1gNvH2KYn;w#}`50nbKFM0Xl z+1mt3=EYkN=BpJcSo5ZUrcM(YfcEuUoBI_htnbuOzW zMKW4v0BrdrqjiSBmQONTXAo@pB+J&(M7i~2R(3ATCPgx8dsWIOS=NSD9jA>;wP_<6 zwK0UXe3E5t=nJ{F&@O99ie#*rJ5xT%STlE}e3H>RLsYX)vTPkaF1H?PhReT6k&N2z zN%soF!6bb5cXrPAnR zuY&w@_bi%UU{;Ue?EO%~9lI0JtuNJkXh_qR9l~F9+Ax{qb#a`pfAktvyybzuX~+1) zbQ?>J9-7$n`I~va?Ns`?Wfdx$qB1WpG2PZutB2kZRJs>IyvouzhRU|6%x^Xj)9oyE zdgwYqrF#p+t1JypsGJp*`N2Lh-MOW?9(r9+>0SZxDoY~{D(6Mzd{&plbQhKudg!o0 zrF;Lwt1JyWs9Y44`F#Llx?7jF_R!aZO84@IS6Lc+P+5q|BJ+}%?$Xjy4+9~nbZ>rm zm8Ag%m0eMp-!>qoyKQM(4`V2(bnkpXWj3lVxpzCkHx|Pk;X1}+HfBQh%=m1EzhltN z@!75M+3oS!m;lD%>$J0_cP?3irEuw$|rzmCaf>^df!aqF0D#;jwq8Ly7XX1F>g zd;j?C1LLz9tBz4}btyY<4?l&U_?1c;9|tLxX6?`(hsI|!Kplf-d^#o@-C$fcycw5` z34dHRCT*9Umy2sewh_+Dg^9VIEghj;m|VwYV}cx)jY)1?HYTcZ*$hX=m}E3MCY!-% zo}HJgw3xj$c+XHYTf9OxBhfM03`ECdGY-wObHk-2FB)bPnk{j`FoV!B*^EKQWHSWK zvvb3xh4DzRzyLH`2tzjG&pbO=_{_6&Ri%Y6RtH1RY~c&47gnd|Mkt6BSl?bwqC4Q*uA*Lh|CbRl-`2*d{G}Uh6>Fl zO=nDA!ajlr=Hwl07z>qVL}rXyO7Fycz8I~!(oAM0+s%^6yV*yImcE(|W1$9($c#}- z=?$6B7o*i!n!R#k^2+v+qN8tY!SJmrULTKZ3^x0FeHKD#bfp-3`t;k@fdF2ObtbB`vsvuWmhvpdZJwzi*?&Pk2H;H{N*I#B@ZvGoBn(Ml zc<~raslgUWV0iHujER6D2@EeDgF*!iNnm*K7=$4KLlPKXJOoxnm*W?F3<HbV_T{q&9>Tq>K}hz` z^VdVTuQdqC{(1g-2=}-KA=y9A-{aqh#XTD|XvOv2<*wJXknGDB6TBhrfDJ;jf1bY{ z!ribzNcPY3*F(57HVDc7dHx>%BaGtAUG${P-PJdE6|YPxNcQDR3m(Evvsoe8KhNLe z-|VfRFRo+dj--NQU%tcOt#ChWR!H{G^Y?hyTS0Hmtep77NKaWyT1fWad!83>>CS{9 z2@EeDb63KU1cn!nd3C~&1csNDcV=~uk(K$o`Z}-R?xcWZ|4I48gU8&HFeHKDrPzjP zNA}+@_x|=TZSwv$>1TMeiTm4Rh>P4N?{AYaE(e>uzfHzCac=VdHW}lzx5@k4WQ>#6 zChu>PG0t6^yuVGxIE8KU{x%uo{PWe>-wvkO-vTp($;(f0+|Am&PZAhjJchej!;l1q z7msNr3`t;k@tAhPkOYPokLe@~Nnm*KnAwCO2@EeDGnX(Vf#Jnt<`ae_FuZuoLc)*) zh8K@nOc;{D@ZvFB6NV%(ym(BJFeHKD#bcHdh9oe&cno*5)?Orm;bo)y+rbq3TVN*c zZ-JS(zXfLE{uY>t`&(cp?r(vaxW5Hv;{FzxiThh%Chl*6nYh0NX5UD&?@!H65*S{5 z*EoB#v#r_tULnH2RH)}nfBrv>qm${oY3`t;k z@fZX}0YefPUOWczOu&!?h8K@P7!oiff#Jnt5IqD8Nnm){=>B#v#r_r;Ebt|FunGrv zNCLx)cNvRkz>oxn7mvZ37ceA&;l*QaN*I#B@ZvE?6NV%(ym$-?t_P2w{``f|f{q11#{&ukO{q11#{&ukO{q11#{&w)P>~9BC>~DdY zxW5Hv;{FzxjqPs-Q|xbn+1&l@1Dm|RP5Lo$Z|43s8N%$p+56jM49m!7?{AYatVf%@ zzfH!z3j5n+49nkU?{AYatfQN~zfH!lAaC~mHW|ap{#DxF4yV}P0yA-c3(Um*Eie=J zx4^VU!jX0gM@Rz0iw{{k2}2SXUOZ+tVMqeQi^r7qx4=x?-vTpne+$gQh^@us4@qEn z@&0U07?Qy7;xXLKTDV3M7+ySPDPc$g!;8moH*0!G0>jHj_qW3-_P4-H+}{E-aeoWU z#QiNW6Zf~kOx)iBGjV?l%*6dIFcbH;z)alV0yA-c3(Um*Eie=Jx4=x?-vTpne+$gZ zvA-QovA+do;{FzxiThh%Chl*6nYh0N1`$qa1R@LxBakF8y!cUy=pkT80>jHj_qW3- z_P4-H+}{E-aeoU8meW$Pu;ztgkpzYpUv%zfZGs{R3@;vYG+{^r!;8moH=FHmfnm-@ z_qW5z``h8<{q1n_{&x7X>~DvY_qW5z``h8<{q1n$``h8<{q1n$``h8<{q68&+20PQ z*xv#(aeoWU#QiNW8{6Lwr`X>Dlkab9l}{u3!isM1_0QMNJctcywf7L8Bwnga_1Ix$ zK z7ztaQ&l0ve463Q5hdI7n3{t%<=6H;RtM;_wI*f#^&X$C& z4#ObT>tT-fnL(<@FvnvUqev!>M#saJx0P-hhdQFF%q^q41-jUk+9Wa7^HfPgsl$4 zAk||eY;_n0sU9O?tHUrz^%x0T9Y$`;Xg9R>lCafb7^HeV61F-FgH(@^u+?E0q zVXISfFsVW8w*{dab9@(LkZPt3!yJ!ckm@lKwmMr3Qawh(R);~ol`zclw%|kw!yJ!c zkm_wQ$72|zdd#$8t8*FieNY1%TM)W2$D3l1YNiY$VXM=_Ak||eY;_n0sU9O?tHUrz z^%x0T9fm=w$4J=fFbq;XM#5HyVUX%E%$X)^b!zymp{YR=Y_YJ_L2fBSnBgn=)-r?{ z9&%e5!i;GiJ9NGrPg>B_aF-e0(1|jH86I+b8Nv(?c|{q*jERpOI$vLzRG`bjS7vxC zuPQ^BG4ZiOXXTEh0-Y9CnBlFQEJK(v&0~ko&|1=hp1&o8tq#K=)q0a*By4pU2B{t+ zVXMP1NcEV>VXITXXAMmOhTxVEwmQr`BN*n$->V&oS*sGW)-EGvwXG#1)T)bft8t6^Fr80L6e?GX%fJf<^(VUEWzLiPSI$72|wdJJLqt^_VPXH4GzEkI7Lqt^_VPX zH4GzEkI7h)wXtLb5c>M>c&Y8XbS z9>W}OixH~FFvnvM8I~~2@fb#^UJrAoIcn8a$6RKFYHDDk6tfzJ5vs>9$GgJ_)nl0B zF<66380L5kBUG=4IUd6Z)nl@l)qG}z>M>c&Y8XbS9`n*-R#U^6)zqK~e9USPhNupb z#jFNli0U9&%xVyZs1EYdVph|_5Y@Dd#HL4#6W;GQI zQB4K9oR3)z!VuL#UP8=jDj1@g3Upc@vl@gUs)M|=nANl}W;HG7`K6fEFpN+=CW~1O z!wA)5vY6E{j8Hvh+L+Z8FlIFc7=opk)iC#rV3;E@YrXPvzbEtXCO=1%^fO-B#P?*9 zA+B1R{GLoQ#`%4d-;+tkI1_I2dosxw=dn$GPbL}TM6}88$s}W(k2d)|nPiM}(k8zr zlZq47al8Gf7~0@tFC9AqfmG9q%+`b< z2@EeD!>z3OOcEGgJce6Y!;l1q7mwjq)-WW2;boc|GVW6&+}xTPlBcG4jtH3TfO>bh zl{Gyif#JntxRo^wNnm*K7;a?^LlPL-+&Z7Rl{E}WV0iI*xRo^wNnm*K7;a?^LlPKX zJce6Y!;l0q48o9rAqfmG9)sv1U`PVP%QTx?S9HV$K@G`MQ#?lm z3>Ns3J6MH-9+JTD;$6n#889S);l*RH<^>E%V0iHuZe^`0NCLx)$8ala7?Qy7;xXLH z8iph=yi9XL##JFVx2A^Vqm!Q_dUW!0M2}8>j_A>sv|lwvex5B0>g{%+}z3f_; zPEGL~5is1`;yVyWdymKyLvP^|L;NPhOyy@Pl?qnwB0N8&e=}rY=T_%gN=q+qY}@s14;T0|I{d>gy*^AH{r#2Km|}ani0Z96 zNWSe-H{J9zX*{}ko3wG`@TU9z*h}>NvB|za_SN$J?Jv>yw@>!{?dJQ@kD}w?p|b(I z&^3#dn*QCH8}Pl)A+nb7UHV(CyPP>iOiVrMQs3ZGZ*{4+xzuAW^>&wfhfBTFrM{6V z`R++=Yo&t7)4uC@CvF&KpIt$`kbib%n(unP0-CR{Ew9Y<5EnNdc-g<}ne=01Ha77* zCmBNZG&cD>CmBP84`c2_`!Dx*J(DqP6&jm-o|BAW&jDlZfpa%&cJ_1Z(b-{-2xtWzR>nZ1Oc$`LgHD z>wMW$tTnH~l2k$Qu&HX4PIZ2L^4C3wS!K%CJ&&*Rbx$!kdo>O6ABlUA@0F#qAXUaC$G#0})yBggvq>_8>9LT(AQ)gIGZ>Sx z1Uv#VZ6q@olM%*KAcK+2U`$3B4}uIvGJ`Q0VLS^m7|9IAWQ1Wt4KR`!jL8V&iI8a{ znZcNhFdhmSjARC5GQu$91Q^K-#$<%?XvnmY%wSAL*!~0~nZcNhFdh(@Hj){P$q2(# z9AG3f7?Tl(2{gb+W-unl^hzAAWI@-7wJq6P$!8Q*#sejTk<4IBM%a-A zBbmXNj4&Q6nKqIcjL8V&$&$fHW-ulrjE74GBbmXN98l$GE_f|1N% zOh(skPcV`hjL8T?7#7-qWCmk$ObO5lvl6WKqo!9TO(btffwCP^ng6d!IFdPz=`kkJ zp~suNBdH>3s<09??8M4Uo=iBBIgaTuCNVfNlP7*Y?`dmE8_647)O?;#x?HO_FGd>$ay+|0Jg=K*4HWbWDY^MIq%od;yF8JXT}Hf*HXkYom9GS0Ew^;@Jv zGJ`Q0VXXusnZcNhuy%rx%wSALSSP_qW-ulrY&OA2W-ulrjJtj-0?7=s=2amiWtJRpOucOH zCL?Trf|1N%Oh(v&1S6Tjn2a#)`pq|z8H~vYo*w548~-Hao2A!k{OK2F|~_I&ue$R^MKoAoo58P z?s-54Tkkv|gROTSkil*nUjj7zB};HTRR>9}4u-Yso(E*G6JpaMmD`gxk{OK2*aqD7 zTN{wfU`&o_19ZZy1eZP!xGe?B>z)VXxDB2M995Hyme)NG$Z;pfmlA^`E9JW90Y_cb ze15(2fD&}Q^MDd`z4L$)bc5#sM@M4vb)XD zarxQg^MGWGv+*XM2P9*hI5+t`K#ZknZj;XgGHaaSHu*e2tht$Olg|Uh;KE{7Q zraKSFVC$U+WU%$l12R}s)*oB5x$C#Zm}CZHGOpR}1S6Tjn2fMaf|1N%Oh(vjf|1N% zOhy=Y{pK6V48~-Hao2A!k{OK22;;8bU?ejblM%LGT3_O0U2z)^MDMt z-g!UCL^qL9+1J- zI}gZU>zxN=u=UOZGT3_O0U2z)^MDMt-g!U<+xU5aDw}v7kiphF56EEaod;yFYx5?> zXbLS)GJ`Q0Tb{dq>mVdE7?Tl(eS3hB%wSAL7&f2*MlypjIcCg5Iv?}y=?m-ygEEq; zi~-rY=K&cETe0LCcl}mSk{OK2SORQp0*qt^V=}_H>o;vAGZ>Q*#$CU`NMr!bZTvhytAk_lFwE@Wt#^jhbKqt)F;L_&-x1>OM-SdDPx54v(BU7FS({YV$#1f(@!U>Ub58B z!IbxRPJDOOz2ktzCpYj~eMEZ4AADu8vplJfz=P?lxhqQ8fA16RhQxCvxwnHB!&>=VAY{!{>_83dBM;#+sC^wcKsPTB~SV z+45QxIRxsR=SV%zpGOK*W4B#cMSiXrtw|Jmj5R4+XSq8IYn@`&$~K$Tq{w}M)<`|i zpSSqe9X?ldv?jBMZnAOUd*X>-!_cv}g>1LUJ%@BXx##G4+)gNul;?2|p*&Ka$Bl#X zNO>N23(6zqdE6o>kCf+O$uk})&*Nr5NEcIA7^2W z*bA;vkkgUAMC+M%CMHSGyelzDdM3jKQ%ll0#7QV~=#^gbZc1{-(idetlRuPCLf2Utp@5$EH#Vxu-^xg&C*KZ5S^dZxg zCBFnyb-w2Q+~|_w=hD^8I@jELTJ5;tE^g5!BU;Z_5UQc|a$f%4;m?gOA*G<@nY7|} zWih^A7GqiUZ82WlVuZS}J*Kr5sBooQTDqB8y6^DmF>AG-c2;v|WUanm)@pS|8v@4j z7NIlwB2IX3nIg{Qi-p9LDnoqBD7GP@yjcSc@|ynmh7BBL{lnKPVj#hG$u>8{A9C%-kB_ZfL>^8R(+ znvBjAnKPWG#hG$u>5j>#C%;jd*NnVTdH*_ZR7PjInKPWC#hG$u=}yY0FY%^jyHeSc zbt6CRp7`||-@wTKXh|KDxt$k~JUX8xR%R{IB*$LA%w;jd2U(I)mWe3K#N_X8McGC! z%f#gGaYfl?F3ZH^?{r1kRxZoLlI}?xhxZtzxNeoXLDI5CVvMk z%FgAoOicbhSd^X5Wto`#-LNRTkjpYL`Fmnfb}^S_V)A#!qU_dOmWj#VAB(a@F3ZH^ z?~+AXL`kV{FfsXiWl^@9%Q7L~F~i46vH|WRn=u2NyF?q)B%^XB;vi+ho?OibIQNbw zOEStb5oMW}{MEB4%ROh5Wn%Kz(4s8&q*0cM$zMr}vfQ&qStcfbJuS*|Pa9>KnEX|> zD9b%>lx1S_*Vdve_ry__iOFAKi?ZA^M_DE&f1NGLa!(y)nV9_5wkXRzca&vf^4Hv= zEcfJ5mWjzqAbFdWS5D_->8eSm%S4oAV)7UBqAY^@B+JC)FX=^D z#NtVoiOFBsi?RrvlPnXHzq}V^d8!r5%f#d_@84l8mxUL|G;#fAKHM-kQrYG5J$~ zQTDc6mI?Vrpsx`0<@GCsM}}4*Bx7we5evnH-HFXBghz@dOEStb5oMW}{7u0q%cICB z%f#f54MtfWRYqARabWF;aQtD1?ZnTg3CCycVM%4M05uNHc* zF!a~)iYKY&70Fm$CZbnN*rVWi8}X#oWJyL@CZa48@+CI!6(*I;s}rN6X)P%y8I>~; zl{0akKfbE(M2#N=-!Mp>Q!M_DH18;ZU{FjHm~Qtmu= zL&!=*GHPZbYG%UjD(B5~Pm(1WWtoVwOoWdvZvL6_yZ@`6DF^HM;UqV3U*$7papP;{ zOgTDJK0cOHuyW=mpD9OY@)qLyE6$WNH~CCCI#WJA7H7(tn|!7mohct5i!65`Q%KJPOz`Aj*=&g8O8 zOg>YNvX^nD9A%riT_z@F3ZH^Gvz4DW8}C-GBNo~Im+@FIm$9I`Aj*=&gQaA zOg>YNvU9mC6X*HkBcyrcSUf>8$}$msW@7T0a+KvUa+GCa@|kj!-a%2BqP`^?14aHbrUZ_AZ4G5Jh6%5KkPnV5X09Az)#OgYM4 z#+h=I-I@E$#N;#OD7!0{Wn%J~a+JM{Gvz3I8E48-c5m)86O+%BqwHmzDM#5WbGuAT zK2wge`*K+(CZ8!s+5NdJ6X*HkC$s~|u?dZ2lw~4L4oplwQ;xEiai$z)H{(n>DnFPP ziiyc*%2D=EF3ZH^Gvz3I8E48-_S)Po6O+%Bqb!e+V>WLmXtFw`Aj*=UZ2Y{G5Jh6%JLXFRtOW5&y=GqkCCG+6O+%B zqb!e+qbw7X&y=I=Wt=HT*~>UnjXWjEtY zIo9@NoGC}y%Q#bxvX^nD9A#hjGv!#-JVuV=g^9^$%2D=ZKU0q7y^J&ED9dBySRy7~ zhBM`;oF~XpITPpk;{%L4k&~S%M_J}aStcf*DM#7MI8%edA|@uEDM#6R za#vPJhH}{^wnJ{1O+207y6^Cbzdk=usdo%gjUoQFmM*aW}B8u$z z{KOZw;Ex2&wXz52tnKRXY52wd7b9;58O9^&cs#K%9!baJA%yWrIvx)hj7QS(c!*#; zl8(ni0^^Z%JRSlVkEG*qe{VdJj>k>B@klxzH|fSB>3H0P8;_*pag%L4l8(n6wed(g z9(T;fBk6eD1RIZ}@}6U}K9BP5$=ezc;7D7~x3kxAOb@rd!*}=J9eLc(8jqyoar0_C zl8(pCsqsiU9`~EZBk6eDPa2P;<8kw7Jd%#b&7tu~Iv)3X#v|!?+}s(Dq~meFW;~LP z$NiY`NID+3TE-*kcn1=Xq~me(WO5`OkDDXokyM_(xmRv$gztGg44BY2f z5hEi3@}sqbcLc3=xHB+IB!}fAjP8v~vczTlZd{TjE+cf~k}Po< zkQbqfM4%;OYyR<-UXZ%WLOCg?*<{G_3rLp-mUbVL#(BMm8Qv$72j^ zJd%#b7}t0tmG>MS8EHGT$f$SCqG{eSpfyb-p(*hguo{n~<1rvL9!bYzz-c^^%F|a& z%XNnyk$JcJ`sF9Ots<BX%tOnz}Iw<0fYT{rULmRjLdtybPsx_kbG$!}!6 zF?$J0Uameo@Z>qg$SQZt;p)XL+f8{S`-{1TNF zCcQ*;c;qE2wZcim3iDLyR`zdAem%+xBWC3FsOv^vk5V(7hO{tGl=H&(95CGELba3Ytq=VGCVT+*J42|jX3 zdoK4=T9^8_>^+zJslX-ex!g|$E@@XEsGzJqRzK=RxqS*zhdkWw+1x=zHWQxBO;ltv z;o00rMK%-8F-9V(eUmM_(n$Ha^K_>qpRhLOBJ~m6<_Kz8LC+S z%Di`qTcf}w?YXbcxTKv^=;66jFWps~JE8Qw4IsCh1 z6tudlszDWIr7g8Y;tz&rGJfTZGR!s^l3vEowo!)JCPUK8_!%k6FxzBEdYRIw4dr3B z$&mCir2!RWm~Ap7y-caU2N`CY3`s9j>c~Nc*(O8M%ar)<5c((LbEbl>NiWOxZu2%#{6OCNIyF{lnRrvVS-`Q}z#MXUhKJWTxyN^_Q`K zxG8SR`NPRf**~1jl>NiWOxZtbm(f3*ohkc=vomG?aCWBbA5Lb<{xQ0~oSC@3Ts?k$ z>3?yW+g__dy0p^t-#yKZlqg+VbNVk#bE6?jmsX$td!{*vU%kr8U0R3w)0~q>;nITC zpXwMpST3zh{i)8UgK%ky>Q8g<9BZt!R`uUI)q!wm>(Z*#fASJ1yj;I7yZ;R~)c*z> z>VJa`^}oS}`rlw9{co_5{x{f2{~K(i{|z?O{|1}V|Argtf5Q#+zu|`Z-*7|yZ@7{E zH{3}78*Zfk4L8#Nh8yaC!%gXbr#968PHm|Fo!U_UJGG(y_vl9Y->HrCzehLH|4wbB z|DD=U|2wr_|N9K?q2OG3oo{L{EO#1Hg?bCiv(2fZx&=J*HdO$(usq+MDptciEj(>A zRnGtv50^~U4+=a^fCn+AYIb7r=)+X4yzMHU=R9n-hvj_KQS$4h8SU|&jGUO4%Z+w$L?oY0oPjB&|-*%=-W__9Of ztv%esnr>un?cs)2W2&*awTHV~jj2ZG)*fzkHKrS%JmYLkH$Ho~3D%fud~WSw=9+GJ zZtdarSYxWuxwVITWsRvu=GGo=oHfRe$S?QK;0E^vG+IX<8b0$Nlh_7#dLP7(Cb6&W z^ga}m*r;~!|L&2Q3NkBjx#)cud7Z}2Q!nzP|Fd}bq}z-i{r@KL^xOUb9Q{`THHX=7 zWlyW9>mLUw>R|MH0xs(KggvH8;=fdDp7{tgd<<=~r`}35T!=oPE{fha2Os#%Mesqs zZQJfW3*JNW_XVO4L?s{e8@TF&fXhCdr4MLH`Vi^h1H7)Fl8fHC-~%5opby(n5As(6 z+P(AOJ@s&O;$N~N2oopvvLf`)38)i_&b|0QQ4=4f7bq>gi1guD54Zd>GRf-wECmQ@4epb1&Eyf0V62iaThy`IUDtJ=U4xYnuEaCarGT?$E zf0r_JS)DemxNX3kgX7uOZ`ef%v>}{*Du(WJ(Grh+pfQ3*B9*iMP7G*^e^E_j>DV_s}+#)uX^?k$V9Yq;pDNqs%P(u ziCd~?->8X7O%cI9jPwNsK`P?;qaKg16sjTSH%*etP3YagV2?V zs0lQ61q}5qRjSDkCZZz^>ECx}p?`R4dh&)CPGuN=2Be4T80CKBLX0 zovXbjw(hevxu9L8hOBK{*3+9ZVghecJ5(!gh3=cVra9f(g-$nz^V+vgw}xG9={UUB zGuXC9FLYRk{{Mwgj;sE~;%}_=>L|?CO7*Ire9tF-@z!Oz-gfhX6lxZ~mCD@8d#YEx ze(^U>lKZ}`zj0Eyl?u5RPR^~|TfOQNi?9Fe(Ux4-ZWYRb=b5)ns$3e(;|{J$~(#E$f=i!B7WRYuLvJFF3ZOE+wB+a%(tX zLr<)XkrsYN7YE_ z_^h-r!%Qnqi-THbVd{uiKWpYKeHJDOu5)y>CcjDxlbO2iJyP=hv~%{f%`{e*HcHfm z(>7Mr{%M;A)X3>P|4955|$o!~R{%~x4ppUUDXrZ%C!(OCbMFblj2;Xyv144TW`wbAG`^X3o z^$}q@d>=9$+GkWpxpHM}1XT)DRldf#?mt>Crw&y1N-3!hR3^ng9jHu78FZvFDJFGP zGATxN1b)2_>sb1FACCP*=3eyj|DW~Yw_vRBpDr}os>fa%hBF7mu@hl};NUs7lCK!Y zuEu_wt*>-iZ*cbaI~z;h29G&(J*-wXxh!w3eP|XH zwK`v|@n!gG@Bct(fZeCW9nYYQw;}H6y$0LfPUD&FTPpA0`@LPUftJadef6gto?oVGA>R4>`?gmHg z2-#O7fu@B(Q+=SRTj|3;A;AuQ?2Y?UQo^DOvbW#;(RV;hO8%|3OVxDr-L|>4#$a+a&#PNFV!f^(?{(D#IS;@#|02 z!D_57G|#h;)rHo1man?dKF^|67dq!zs_Me*c~)ufvEmC#v$irwt%+7pejwE4S@vPKwDzaV}s#<^)KTx z+q`PWFTQa6=JrhQr;zNdbQ_|-*=t~^pX&WJW@7Yx53arM#?M@%C5ic^dP^IejmU(w zIGd6QX>vB`l6EU;)TMe`McA@ThzOgP2@zr41rb)>QoW%ftUe}0gcZnyh_DKS2hi?q*5w>(^OLAZKChy?vLF54Z#jAEM;7Yc zIvg3tyQ3~{C-jkJ=?~%O!e?X*uJCE13nxQvr6ReiHMZY;yPg`84+rFpJKxsEm6pbi zwPEcgO^ifpVkA-%v&-N}ibG?mVZB0{7>U%xNTen<5ozKEj@qQbq>Y(Mjm%VPWs{Ot z##eDtDBR3Z~+zvU5-#2dfxwOb}DPEF>qC0hu> zNm?ib&qPxhs+ZX&HJOD&olf5#b(w~PoVJB_X)b0VpNm))3*f^0m<)NhtAx7jd$YL)+J?WSv|wwpAe96EC#S{_NXpsu8r$Dygss58>nQhiL- zs^vN4a=T;oGRI%_WgmZeJC>TT)Os5le=lc&r)nvVzkh3=<@@S#|+s|=W238bG|0GH@o#l zW7wT(Hiz9t3-@rF4N$EHsCE-Sou%1grqDiL%nWdIK_ z$Z8G;I>PlntL~+8iGg;KS$wU}G&iVO!lzk$^{!rYpr(N=={TlFX7JofU*~{aVxUv{ zY|#vw(U5(e-%X9gRz^!mY_!y>(K5@C4twfZIb)fr96`OFWW7qiz6rOL|Hb0#*KV7A z=0|W~c;@z^Km-mp_t+;QWso;EB>SAF`Wh{*8E(`Sq-(jpi7Er+I;3ZWFL}uy`(alQk z_GqnOH&^S60p0k|)cYdKN?5Qe>nzOByVzf{T9f{x{iU)HDu5Q(t13GOn5q0KhS3`O zixqWD!_P{?HxJE9!#A_FX>Cli&&pvd(QNjnEmZXJB)fZT>EPU~cuqWv+q8fqaoM^d z(5;IGwy*HxCX;RbPklMYw%0l(8QWOvltmk3%F>{Dt2LBe#%l%5E9GFxme69RYP47q z>;Ate*PWaTYrUTcC#vpvb+*xz{7mp*s6ooeHbn5?Y9K3Z zE_&Nd>P=@nYy1o_^h!T8Ez%E#UZV|g(}}6zp;wxN7(L!zYl&W6XK1KmGp5oyGL_bG zsq|y0rSe=;t89h%t7S~qdq>eD@vzjN^EM~Xg&sqD;l^T7>+KcJ*>^&Pj7#kS!-nRt z186rG_AQHpM?1r?KWljmj!(~JGN=w4|X=nnC0hA=T{e z32608L%SpVW;&OzRd%DU?_oPgUE>kPRM`l|rQ+!yMvKt2HAlstZ4Bq-iXdDyb@7)X7uoQPW!MY(-7SS`6{Do-xlzJ-tTe5RO+=4QE8u3d@7ZgJ%PnH8>JE zUC@2b6ZD-E1RJ4?nSq^#QvzM?!YO*%g)(~Cg*JAgF4WPjF7(lzE^Y_Eo!3QdI2MP+ zY_Wg`8@FN;BZ+w=3M3YWU^B6V(Jq`hB)Uilhly=S%nyNOVmtayv2}>SUknG>g)9yG zL+nK~t1DUCkTu};sTcyQdE1fK=l*GldE0<%6wKp;k=-LjMoB| z)9LPxk!tGh9I2(#-Cd1h8P&XF*l!g(S&_SN`m(#&ojob~4P3z1c~bPHbI<%SpDmrk z&3}8gwAg*ByQfwx7kh@X{M3paB-wjw#ZHp!sI_7jN%qNF6aAvap3-JVIn8_yfLcTH z(KXuW3w>s@>m$2BDJ2`7L*VT4$X`M}dQFR+hH&_-CqdPe&70r}uWa9jjr9-Zl4by@Stn(kk`u57bG`3G6mp)c zJW@fsW^!pnW~NN@xlFe1>&~@y_wVb@w|4Rs&ilFx{0jy*A1>yLg_~!0cH29;o#pQA z%AGs#Es8nhwRUR8k>ze@Cm21+B@!7skg;PKNJmGyMS)R$V1vNl=jTV1mF~MJG3OC*HxrZC9^C;vt#Out=48tT5#j zBRp1`@|O755pLd76vfibGt1q@75=#dBd^?v^e#>B0J)$jk~OfPwc|=&@<0m26|!6% zvH=WrQdZ&8BXu&H*U8Oy!-d(&E|mOKrF>u{_)ym2(j_03@Tvhs=i3tW-2B?uAtG_# z=|{>HUQVk{ZV$zU_GwXf;pAYx-A1s-CzjebFV=f#qsGS;(1VscEAyBTd&gqNi?bRp z)hoYTtyEr*&QX)?kN);MHQ5{KZy)bQagU_GecavU771ac5{xUAVqmEXaQ@p+3f!hr z;I>pD^4d!AI9Sz!($mqRJt$@e-8oF%GlT9tdO*F80f|(sSOQaxGE$c9=nmh^!hK2>t$JGMzzZ?wU%n_^4b z23;%L_T^duwk21mw5}n;aK*Ocx^US}To)%hFw@O}?ZB;f{`@+u7pJ{Kk7p8P5;OzFp9N`NK5N(+;jl$3x*ew7v`Gs$FUt=URV zTA0$4!DQ#G$*^mOdVti$jigVx^Z*p*pJr(<7cwb(f)YL4}A+HNIk4V*ro7yq=3SS@d@ za@W}YY_l@7rEYAqF!ECGwOJQ=snhmdJ!oI;yCJPz)FxNRrk-h&De_W>?7RBWerPuc zflJ-b=1kX_@scYF(h&eTGxZygmo6 zFV&=0?e;44r}`X>sZYDl3S1iU;RG|U&w=Y{HL2CXnED*JUZ=y^?zqB6s?UMzfiq&2F2dSxHHnT?W!&N>|%-D@wD2Cuw%i zB+bqRY2s;{g^cCa1`p-dp~H!T(mH6Y+=L`)D|hNH#H(~Dw@O>N2~5&fZj}z@R_Rb~ zm9}z|m87lQDjmwL(xKccZRKWy(kxaiw+{4BZtaqx+&Z|e+{{eUR&JH12Q0TrhjOd5 zm7AGK+RClcq1-AR%B|8?Ze}KFE4NCAa;tPGw@O>NnV>Wa63eXvD3n{LqEK#~gsj}W zBxx(RN{4c*bSSq-`N9nz8#hBgFNPaDw#0bO|G;2$vOVg*hn7vci%QVBX&(&n& zFVCACI$w`J!YY{R^Xu^kb`^doN>umt_(Q7U>+#3e;}1rwx{7~2{`l`C{`ilGzxXd- zjn{Z6l5aKFcpoE#(F_RJJ}Vh1s$2VM$w;fs+K);`TDsT1S2EJNee7GpPKTZC*ayP) zgt6MOcZSUk!^vY0hrIys1f<&*2yEgo)1p7#{vUQ99uEc-B1K|6%#t%y{+zKCuz=tK+Z9)T_z;)VF`Aaki>^2*ik}qZ}l8IOGsW(J;$yRl2=yco^MF*Ygf;4NW?V0Ji(q4 z)3eoc93(M4S3So*6Vvn6bL=%Sy-+>(Se{<2o@383zJB$B{pPc%BmS$(ooe}Tg;qiM zo(0PvXcj)uEP0?=>_D^3fo6dN&EX$tmNd{TWuRHYK(lm#X2}BmSVpr%nvZAewpO54 z{>d#Z{G`urBr3oA?;z_ij?855NT2&tB?bP)eAL4Dv{p$I) zJrdik<8h@kyV%?H1x0;gZ@`<1ydABN=nZ&hk$0f=iMv6!nLlwj=(hCz_yBI}3-STn z!E+yY#G@$>fAF1-79a88Ga_@m%gV<>_`JtF9^S%ZA#=E&)yI8&+|26gHv)?V{qjS1 zacL_sc+6#vKlAvJ??&Ku_tyLYNTibM(6u#l9nXbmX{FBoHCp%$vCdwNzkbUmkgrg5 z_!u5;@5()Qw)4$5SF48`;)y-)*X;dW)SEsW*F2?avnK>I5|I@Zn_H3O>69e2Y9l$s zx7o*8m%Nr%2A+QtJfFO1=lWxUN||8yY7fusWE-O#-6IWomi<+{|BO#=RFQv8rpyW_ zzT#oK=oAc6Q@7r1$l2_$)sUS!p3`c`aW-li4~uey5BtDycoV~+Ef|h##c)&$Mvk_C z;cylV$FgELk_E$IOg$XJf_W@rIC_VDD;dYYag2dCvRwbo-B-^VsEd2C(kkra-Q}!_ z@SNRtj2=9?hQWiU)^HaX85kJAI(K9H9J|)?>1{2ICdQ*2PBr<><53KO_3Yr2 zNm04!V+|b(eZ9raK#GS!-CHWZ33vNB`j zE?sN+WtT=3Bm9~V;TMVCK~7f7@{ZMw@bfm#(Rjd^-}JhvR(ZcF{>n0+)Os4<(L$`l zLTYT%`#oeFe%4`rKVodPe}YrGKJ6c<3n$MUrr9s)O9_(A?_a+Qnl*v%Q1O`@P2j;} zK9YmPg_F{L&te6aw;Af^DT1#@5zGaixWhk-1)bHU812yt)TLF?28M4OHz#rJpzPr_ z33;a?yh1@E?Ehj#ewm^z{T=r4+CYP^4Se}B<>h^YZ-WnSx_lq>0VDf%6F*TcQ!^e+ zXIYqJF_7eiNtOmlUYKNYkmLoc7yIoA`15M`6I7jcnoc`Kr=6alMeFusFH5;j#UkO$ z$=;Jvp~xR!D)k3-%)i}I$a_F1hqF!nUU5@i@8t(sr1xY-IP5bU@6)83Xy;|ES3U{d zZ-#E^x+n3R7@kX;LC-*BrXNQ(qx{2SY8KZT0Q2@TEB}O;F!1M@TKdBA%u>6UX$_mh z0?`Fu@|6ZfG}&ezI1RjJBdrP?5quqi?-YxNl1EwM`r>WTmi~56wNklX`Wv@ZdJutr z&B&nNS=#cI?R>aS-;ucW2@TTv(#_|VwlHd{oYd|jWDD)HMb8#=Gd&0uh+IY=_C!vo zN91z%re_nx(%IubkFY|I2h^RrKLIl#gO1(J&LlH|=E7fwJ^02MxdU-eUI;naK84Q- zY!Tn^R;^T-vxykW#sadrb5b`YTPhCO45X|yM00E$FT_O}RhzHQJYp_9Vs$!?y7GqV z$ztXd9(9IZMr>OCeu0-!)H!jrm`P4CR#P7Y6`aZ{lfraruQZrH|T|P}+ zIaxGM;mK+^kaYC1BZ#$=TZ|25k~XFwoV6Q;=|D5gd>RiTfMI{sry#@3sZTW{F1z%}lb-ZLf_#-n?#>&kzJLa0F@oBq%`xp4Kntm0nF_>>%Uu&#X z8+grX<=$qmiVNj!bo7|H-F@TvCJ^$QrmF}*S$Q>Vd32b;m$GxQhZ z%UrhMNe1gc7((=QjFQ2o6owFe9jIimE`=e4jn)~fqfelY(6vxU(%OvyUU%0)dYN@* z&*|Rw4!kyR#jxjE!z9CeaUS`3A($_|BR?+#^Tl=KXGK_fY}CR)d)E1mh-(uK~vlXu20oWz&+8t4(H@a9);|9TLkwfX_C$EBn8J9Tm}2%cF<;7}e!i4NE?>$bn=fTiVYk&nziOk) z4Z3a2+<2P;6M47OL{1CIL3b993WLN{-Uh4RCpiaJj|zv;GtHA)>!aRD@MDM z4v6*jTff4p!3x$!us(%6R<`Q5{)9YMyy}nDAahb^Pi->n)}=jF2X;KtUN-7^h@? zM}L`0b&tL*-_OuhQiV^WpR+3IpU`;3o<0hVhwLd$NC)p1VASwzYnH=855VR)FgTuY z;>B^qF@aIj=5ZHCjhvL(XyBk+!l*$Wp18*dnG1cg%{&BK$eRy+Qs1OnNZm!^<*$z$ zUCX~dZqS*&K5izDoBt<|TX;{A<6K8O?T{PQ$or_-pOdmvQSATo&lj2B( zhqF7{)L-mUs9S&Wod!KRIsCh-V`)UkdcuccpXW#@8NbVK_l9<$Ue1X1hIkQ7sD1q- zLIWKAOA+N48kHg7ej& zXR*?Ikp5L0y^pXV*Q*}sYT2 z^cg-8L_^`P(%4^v35Yl52pnBOqx~6}pm>~K9z#UEJaV8EZ}PxN8F_kFDOl!d0TI0Y zV-EjW0FH4nu*UeNPDSA{egt72B}5n10Tt#wroVw&!a>DLzQ@$!yPGmi%e$MTuvfPT z9TZxUlP%uK#IB1KAw8S#UE&)zS{pb=!)Nf63%YOF3akszs)&C>^BE2u5*+J7d@v9n z4g~wWu)Zk}GT`tBCBK;&_=~Nzp3K_3JuP!o{XBaFIm^BG62tig%Z>c2T|e6^uw^}S z6w~Ij_2r|DdhPojKf33cAH-tS!{pbfKevi6$o1w3!f5O~3x0jD^Ty>K&hi}>YaO^Y zDSonsKMk*y@X5m;4edmSxCm<><*zKl&*c2rj$~uL`Oi7?C?a<%S;2-^N|&i3k22)( zsy)DoA6ZA7yisv;O>QcyS|L?;U^Y+_#w4lCZ_WL7)dS&etrZLuR!wfcTPCnYhw=MBqF6o=s zELLi|h~I$j`Yad>heV&o7^k3*F$VAVG!8!^s?(1=7Lju8wob~mXafTF_Xh-PFj1pe z`d{VWa@riCY-Obc0tq&^ndI!A$mdoYYk! zFo@MtW-;v16qSLcwJ12SG$p`LTEPv>2>bk}P-j^BtbX@oI6LWT{HVaa3(_97)D;yjmP5S!#9;4^+{=BefQTK9X}- zPk24bEG6d}&6aw{xCG1!f+VZUD;d|~idp`9T^;HX_Q6ha%r_^iB zrCl|t?n&$@e_{zXY5Rw8<-gGC7F(${jqyTX;XR%#;$scfLd2(d4Y&dxQ-6y8f_~l@ zi_Op5VT_8@OWtdu{>O0br?#7^d`vui2|fm677bq7xd5E#Rd5G&)~L+l%o0w%;K2zd%#CoZ2jZ&JX^EbnovRsELD&s z?5041APFQuFbO50L_yLv5J+P;2~8!0BB+Q;ktT+wD4;YiD4>YI1w@)4prC+JK#(R1 zD9HbuGxKZ~5U<|%_x|tuety5eb7sD0X3m`HXXcsR#qVc%7|sR2Y^DC$8!la-`N0h# zHD^8!wk#F`e&!4Hhl?6mK5o)3KmoKC!Tn15`*&^HI)7%#G5Vp*|RfuF}DAZvUfv&?tUTJ{b0(d@$_(d=_wJ$%5v(2`@$^FV{zj$L(s&gN`t` z%H-wo?y7ib4vfil^3EquUN);zCLTYnl*q0q{4fEg;~6R+CQ!}=GhuE+n;rIpV6)?WE4m=%!yL(UZ0hSr|6sN%bcWdwdgJ@H`gPMHdxC7gdDwSurSaEPM$1 zJO<_GY0$RD+7`AodeOE9X;)2n(#tejQjb5~^(G|8ev3TxiTcZ}jwni`7*60e` znpj*#_-R5?)uHl3Lmag>!5dz5!;!_kCNRYPs>`CqJq`WwvT(JzpBvPu4%d$tfO9cl zt_atZbE_MZt3<}Px8AhuMQ>i*(D{RN&A)uUs+=(iOLizJ#O-TgQ7bX%n!j=g1l@>i zZkY06b@b6~hgUaTZ@k}f!IzN#;J!dv(?lt_KD-pllEy!OAing+w@jzKWx^ilEfa52 zrA)jj`CdmEkI*T|CgaJ(u7W31wmdu;-|{HQ@ZcLKN1jZy3{R%)e0Vax^HGvz+?7le zlqXXP%9HVeD#@@3!5sH#!zw5*2>YM0Pr)wU7%d6!J_Y-zcb|g6%GLw}cvSD!go4F( zgwoM=gd*`0PR+dI;D+@pTsF~z>o$2#pr;e=MpYE8g_dfU)af>Mg|;*<5reN<7oUO0pJ{ulzu;2Q@XkDKv4GS7)`i4UPB+(vl{<^uftclX3~|7=f;3W+^27EJ7kv2ft6 zBh16fhv9k##^j4CUeCbDd@;q%GREhNC~lUk7f;$OpY}~Ftdi=FGF2y4j8VS4E9bBp zR>q4D=Umk);2sze?t#(uRS3gSJq)A9@=*`NFh>kS*H>8#L)9@1UEayK-S$U1;QshQ zI$+p?bil9&>40JP>#&;_Qf#zQuJEE5;l)&Z`%N8JNrJ{MuLiOGrX-w8Nzltn`h#x; zL(5}6yc7U18CP5M39hGDwC+j@JMrqI0IHJ$z&v@<^gqb;?%v^>R9LS(sW4%2!@dv3 z2_Mj~VMic__gxyn9=%#40M!}+sMhESt`XYlVbJFcu>R8AL+{hDrE$-Wg3v`7=wfo% z!&9Y)w|EyckojCh@7HKkitpFHg#hpSH5Idfe5iSwTrW#*ST837F5UE3W#So_#Ogp8 z+?lbp_!4w5z-}IY7_ne8RjPp3CzYK9)5HqACSCg^;vW4n;1Z1ADZeNS zBg3Bz8uS~q*w3#afM2BuRtp&5Z39nDct*qXJuoyN6ZHYrF%5eK9*hSn&^;hOaGSu> z44y{tV3_hiQWh#Ox{UqehhbP#8+0ekTGm64^keOMvxRkpD%7&qwYPzDSo@;CmgVY@ z&L!GLkN%_Nze4l^#qlG*QQy{}WgUo9?Ejuc%UbJ@7HB60YFWM&L!ULF8@^f=^>_1GM%80uSM<&u@PQ+;nq z_9CaMt)UvVBP26D#J94?p!V~an$;k*#q_2*84$L+mG#rUNnv)d;jFB#`Au^Hgf(J* zfHp8hT>y;(G!w#-VYit@VcR7PdyIWRXswK>H~WUrDh;A+79^pRnFd5I)`CzarOSg~ zX~eMRlx`S%iqLXGh3s7k%lD<_hCZ3O*>{pZpm$9S-qv{78A5oQtpH9SIGR9cB%r?K zZB>o5HukEisi9Z-6io|*ibcasXBAsQv|K`eeVI5!_Y?h{s6~bR+C&=?l_^zkqH0Qe zoM=0W{~^(~tQF+4nCMsu{q6n`_(`Ya4m zO(t3(q2EtNI+y4UqSuIORLBozPM}kW7E0(h$VlfA{U_0%iE338$|51OjA)L8ekLRJ zXJ?s;jUeih&@ahI17VD)*jS=9SUd2S6AfdHw4fEyG70?wGSX(O1H^e5sKlC>{Uj&+ zHpE#5)N~%`HVx8D%Xyd$k|C{@-68rUQ7g!SnSuO4;CHe$fw3@}d}AJ=I8l%no*^LR zsm>C=3-PNZXxU}rrx3r8;twFs4WfO4kGaG{E+hQ90c{OEO3Q{4ol5jgqFwLf-yi3G z4yJ0ucBrr>hd>QL%j!)M%v22Xx=M75g#L~!3Fv8}tE41DPdf})X%<^-9s;Ajzd(mA zLtv)P66gRR70VZ>)YQwMW+Mf9#xMlxxI&=#fFW?2`+`6{AWY9@A!0A<$D8^Y{Mc$h zdT6&s)&YRlQP^~5^_#`~*foKASf@chsfSAeo6dSz=Q9(F_o79xPP)D5E%@ofr5x$= zj2VVnY>hx#e?%V%bX<>Uk3fEEM8^c$smTHK9id4~1}OrLbB0vo_2@YJxFm>2DgdRkfI2pg9^u7DChYeJqHA2))d% zQo2=5l^nW3*!O7YP<~Slwb^Aa>MjMb_IS~hjfYx_QPpMLyl9?OkEuFh*fW4-9IrZb!BMTwetHqVQG*CepFyr`e13tR6+{+h0A zyB9@jy0Jrur0LKqDXK(PwVk73P!o@_Ylk^X2b9cI-vfe?I?*ph)q@2IG#gMa7Ala( zT1S)0;ssi4F4Od7){8vdXpqv6<)|f+vJ_e+oo%Sg(Nyb1%@ZuTDM$4K$}|I6v=fl@ zGOM)wLw=I=kKo8<_=lXqMn-Xz3Mh-sZp+aol|z-og4%I3(CSd-vf1r9x)tD14PikY zIoblJ(L>qnIF9D(9qN3R)0v|e2{{rtdXv!4T>!C{gPt_cG2}BxS46W|iQzRs>%3@< zp@>CyQ^NjfaI;NbblgzNViT3HD~6G5n-^*Q$FOd2J&((*=l=}bBhZ2XhyOU%;xQh! zAfS`~csALK()=f~vtE?z|1677QeuwupTd@S(R2RKGj*~OHs60L%Moa(<{kfOtkR1% z`oF|Z3S`pk^naPvPvPlIn#2CDumJ*flur9kXR`&eOPBm-utNepE#LB=$*etix+i5n z<1Chh2xd%=wU+T!_JkLO8t1a1UKDS9jg<)Wh9$#T$)5J2GUFolycbP2E@3mgXs+=M zw#bWC7?-i-0$uR?(D*i6Cs2>T4~;9>QGtdTGK}xAQ(jbNT*WSV(PZNqcEgM28rLyx zPhN&$h84ztFsnc(A%_htTA!9VLZnI1+oQv zV?5953sgT~pYcc5RG_V@4C6%>Dp0mH!+4ps5l9ZqFkWRHz37VZ8tdjoD$_5lmq0tz z8O9szae)G~`;5P`EP-Mm>^C+{pvI;Q<84+V&}X)N#yjjOfkMm~MkY-Zs3w#_mZl3d zMqksUmgWgmpl@o@NQ(tJB1f3C(sF^mmphqs(prHWQZJKU+9*(plwtCdJ`t!;E;1RU zPX&5Ge#Yc4eJ;>w%~X?7`bwZ+&3uzd`W6wi!>qvNCbM*b&?Nohz*T?}Q!#9key3p_ zpaB9MHM|d~j3clFJ~COPWrSw2vxZ%!ni5MRnSl12YDql>I;P%l3X&?l=!mJVr0&CG z9#ii!1xo|G=%lHEbjXX&ne0;2zDmqXrbg0afhq#_o0>>fUUbCNOzPQ>$L#EX&eTE* z>93$mrk0W;9nmDV(RSU`O6o~y7V8l38=&@&^O!c1+8ip~5GX)vHanyNPw=p zJnV8nP4lBtP=EmonhrJ*M!oC#fsNqpSEQi9N7sQ(r zr5C)Yzd2p%>B6vC%&mUX{J1nfm!p2_Vdf{L@*y0ZHHqCylsA3x?IXpdcYd< zSSbWP;(?lN(XTO&m!jcw9*EAHHkzN628`n9E!7(HRH^A`j`l&=%hD}@BCI>iuS#&d zLFpb=?=a7mZVB|f;eh!y>7{3QSb$-id4aS-ps4{z%?qWVavoOcf6BaAiXDfD_xUB# zkP05wA>gceiF9isN55#UnBS0!pW`UOz$|Y|(Nj5MT0hGQDd<)CzV8Al0*49n-z&bJhlXE`hxmvdwba9fT@ z83MJ|j!x$k zw*s9~A*%l_O2M+vw49Sx2vkQq)AECKO&|lH^U{P>JZ4YLe9Hytq(A|NC68W8 zNN55fMan8fqAvx>J4G1gS4aMm5Z|NMkkUgIIb$o2sWVB|Ch}f^Y$l_%xvc(# zhb0(lSzF2jyr`kImApov9KTxDQ2CMUgWgK$Tz(x#`=gXZ|5?1sBc(0$o^jBw04wh2o#{bVu_RMBcjuoIBO@l zxfgY@c9z>vOgv*rvL?u}JPc58YZrM9A?y?B)^74aia84|f}XP^%9jKhZMb21Ob*+@ zby*s4!;&l)2(;LI#nMB5PN4b$S1di{H#q_u<%Xq~yi=gDfKugi0$m0vePqKwNv8gC zK#aAYT*r%?)^xdrK+7TbC*&kAa#{zCQzl%+!SwLlXIT@&baLdKmah4_|?R|&Kna$hE&^rGd~x8;D(c@FChCDs+Z z474)uv#yjIiZEB;KI^-3Pejy{k62gBxdP46AQ~r7mI~2)fhH1KFVO3R4hqzf&}Blr zU$2&951}r6MOZEOMw5W`KnL|z*7xNJM|ez~>Adv=x#v-iY^GnVo8?UcfmLbSBKJSW!x9XB zwyko=mkJ87ZIkPNrJ#DY9kTJbf|}ZP%J{M$bxAOU+IGtcUvsoo)yB3*P7x^E+Qzn5 z?kA8O*v7VB&hVm+wuAC;FY0PLBv%NuL*2&qh5Wo1b+jFoX9yIat+IY8&qpMB`B(BX zFN(1om;dQSJ!~iCOI{Rb`Btv~4eH7J{C9E-FY0amUS5TW`g}jzS@{BmVV^&4JtyN8 zB`ob|LmS(9d4)hr1KQYrl*3N(u*K#o>m@l;p!xw-*30q?j-b!Cv0ah(2{abaPqN`O zrGxppjqPVS!HYWDuFI)j)YW!V&J<`l0*Q5niwiO< zhWEFM{|HF;^{d!xSX>bkLpevyn#joi0A6uRERQ50mDvW;M{7ntQkhM&p+A5)ZQ)J2 z#E{BtCB@|NGf1De;4QPn`hr%R%Iq=X%mN8ATSRgm6e01-_QmrxhUpE~-iF8qG+*)2#lT8dF^WDzR$6iXEqUJB8K=q_W`rN->ct zoOD>xWcC!TYt?>5!b*~WREd8C<{X)=Bl*`!XEc@J#tp43yzCzn|5?)culWDHR1cEO zS2Vu5aml`QTLoIFStnRYHS}33E!DG*T>!qGbqBs5)wzM{+@D5vduYHlD z{u`})e>?sa&OB=O91ZraGMe*$1l?5ZIm&%LX_X4AkId%L`smBA9&zv;o^UZ0zI_wy z3Js;zvis96hg{TbA?5X;v=~P#;$S_?tb+2z+6HR}bOR1(1^3;^hN*;nCDw;D?+kjX zSWDuprnLW{ym$}s?bY1>E3B~aEwKJFX!R?l!k98}Q05Wp?f>)pKU%8XE>*EjV4bSj zWNNi%sMWZi*T8uivv^RbVqreL8f!@w<>h`}1KiKkKFI&^1LgtW5qiIdi>YqIN%M!u z&vWsmzCH8)_T{bfDdqk$lt`jqvXL43m6@tKRN?q)%k%Q({9XTlUBZKM^sPNU%iV9i zKPWBNYCen?nPDH07>`*2JzT}!qS~%btJDl1S-e(#{k#`(zONs1QASGjSeDp--S420 z&P%~*b^npr*Q7sEWlzNGs=7o#YOSz*+*e!u@chF+}5tCKByMG@WQB(LAEVfz||h zz07st9(*se9d0qB%+*A90d3As0kyI^65gh+BOSIB06jpo)Z_;LGX~_u2O#YM{)G^K zB+yoHgS8R7sd*OYB*QeIvDR5Y@g_9V`9v2HeT%)%9@VU72Poe;M3d1E=~0jdRlFY`R$?=p6m76PX( zdrQQ}`??qh)8hTyB)WqcBjKCkIHHL}dl5}1nn^T|=y0N=h>j!bCw;5=66D~mU5RpE zEv-~vlHsO+`8sgo)xXJCL})yG;BpSVqfTOYqZ9Rv0gCrIlNjFPL{2xLc(XT&;a$!o zhIgTp7~cF{C(4Vra+9DQDpZ>w{%qAYqI-xQB6^%?710Ys*Acx&^cGRfYc|Nid#6bZ z@0((skYu>en#AxXa1z7&vPlf@2xG4>s*&1=)*@PuXaUqG-Zf34``AegZ<;1CykWYD zblwD?(-u%NRrT6QjC79IT}ns6*7`7E!E?7}YIGbwNm5X7krvgS(t{H0#(hTcqX| z`PC9~)X>9IAQw)T*%CEXOL$jVE#VzywS@Q1)e`nPwS>J9=`7%14tNtN-X~W}c#m8yVc$?o z*jv;R-Vj$y*gvsE8^FKJwu9&)qNj;oCi*+kenkC=MruaE?f2GNoH3%bIC5bglstjc zi1VUu4&9>1I45PB)L8utY=hOTwV#<8S)|`XY&=T}41;-flPwHBkFy1^C z5qOTtQc|FwgtUn?kL3lnB!3>!3DWbR&lK`+QDdBwM9VekuOtees|0_!jyOcO5RKI% zCqqAs^#V$9$X`zWN}^kcvxWR8i84Qo4e+Kz8 z$X`zWa`IOa-9q#vQD!DNW|BkxSfUxk$sm6@(MsY}l79=)lf*emetRt{3(<0-TZpny zl25dpXeH4tL{Ach%`es%(O9AxM9Ya*65T@dBvIBH=8qLoCq5Isqh zwWs(*Gl=TJh8YKYLp&{jtp%Lfz;OWZ;D``DKLy7Ja83q?0${snfg11|vS3_-DGwtR zlbL{r=VWkD0yYmE%7DcK$1z~#fSC*S5F9GO2*$q}B)=xfuSN1}ll&l(Ux(z^CHeJ8 zetnW3O!6C${DvgoPVyU({Kh1|3CV9tlADpt<|OSQlGB1Dw4}5TQ>s=JKZN3kQv5KA z-yK5qU(5=&btouxNM0ZyAn~v#qdaJ&+K3LyEAF6Mw@2F4I_tX#4=je;{BlXyy{GdJ2 zHui@$GeXZWLtn7KCv(9vg&xuX%KfZq7@X=A7>j`#{E?p2BQ>d!?$MM0y=5B(^tSP7 zps#6=rdyDP8zuq$N%aEIw*p@R`exuvpcf5uh_k?lvzR!`yqw#{mEeC(gEUu#bPCbi z#x=x8nyW%Oh3I0Uw~gy56ltys=@g=iiFO8xpGj6h&$7@+vO@V~D5)RN0H_5S%5MVN z2*PFB709rr1%kgR)QSwB>#q%T0n`rcj$zG{*+%%hE9{zCL#WNoKxOz0awDK8A)O3X zely^o1}eknj~@csQfdjbyVMHkV^S#4B&jvfWC=cz3Kw-FfIcln0ewbl3v{d$1GHRv z1n9d`2cWB@jzCvSaX{Bdoq?{E5`eCgy0Q@X)zwE?0@#SD@Li6XkiRThrNMHs?2*gl zQSwvrSh+%;C{LE3QoW*jUA0uTT(w%YUbR{EiE5XslO{^1F6T21&M!FMOx0hdb7%01 zzX|%saN40ii~%2}hZ^#O`NIfxgfmPK)MW<{5Cq?0$lafXdtJDa#Q7@WYJ_VMu1&as z!VMN~L*X_OZY$x23b(azV}$#Na61Y&PPm6lK7}sBqk=~b4}POC zd=CNi>H_HJ1<)!5Fun_*XBR-r6hPlDfH7VGy}JO$cmeeM0%)rOXukqzzXE8#0@xoH zKrb(V)`Pt#Jayrz2Ty%?g5hZZPeXX@@HB#_F+5G+X$ns>c$&lW5Iim5X$jB6@U(&_ z1fEcM=+Bcis>C(O>0qUKg(VT;gSe+nr0_V~fG4M@G%Mc)9uIu&1ou!X2TRCz6}SpZ z9ISWI2nS1cI+>8?WCZ|{!@-3oIRadGk|V)|N94slkQetrUQQ)15XAHHN@R%%!%H(u zGC`9JC+q9VE-7+@rz|tS)a7JDoD4%dV)d{%56@XZZ}8or93@AB40uFoxd#df zS@N!>6EPC9BOh>_5lXotpj;79 zE^y&VjsO>)88-xDQWiIVP(l73H=$Gstsi;y1fk|9Nd-I>Kh^0HZK zc4mI2J1!@O_0BBJDJn>HxpG*1o~IlvR6;%gSU4f=uzlmqq~S&V53u%8e+v*PoQo=7St^(f(IM6w-A6T zvA#Gjk`IGAm%80BPj@cOFDZ4qSiCE{sGzvW<6>!U=%nOJ#EA|#DXziLA+RonmMXq% z;1nV^zNn;gQIR_*k5HV)<0{C?AC>GX$;^SNIj#g|)vQv8*F6tf3csbulb2o1?Son5 z<>uiWj*V0u;`R0MWDfS>r?^U?1LZ3v^CUrCmfjU3-j!84crZ%z%7CindZp!+{1LlL zUcRd@loiJ5{b>>lp+iECfWXZB`(mZKvP<20C8K(}+y!}_yCn=71mCliJ*>AYHyoFD^<|b z4Kr7ENp(UcpmS02D0klAAwEH!lTuMEWK`(G?V0J$EQoWvGe`ZAkb>gOLZ1LJL{JQ9 zl$Dncb>*9kFP^ELz~=A{00M*1puq72eV)25`X6_>i@YE%KOg2CPpYegv&yi8i(wAU z;VH&SFN6Mz&6l4ynvV&b(o#zE^T91eO9lPVLM(NZr^HndmI6$7UbZI;=M5N_n5)v+ z__u7av?AewAmPj5EhbQLUP<;4HU#RD76&#WFQ;UPn0HxG)=)miuvc-_a1aS!A?eDx z(%Rup8J|y>eeDVEJpg!)6g)E~ptsHCK*pt^u8EwfNe$v%1rj#4Dn59aDZmYfGs;VFQpJJ=OI z8Tay9az5q|E;=~RWKn+=F?kd}F}8Qs@z}F*WuSVa|FI z3sY%%N%Z&>0|svi&U=_$j*p*=U@GfKCX}y>O)0H_Gc9?e!Ha zseG+~gpt`Unzoo2KrUELvR&2eWSk8P2PbD1=H)`&C}XHPf>OoGKsK^+F?7d9G6 z=lslqVpdXA3`5FY%u>NBDrTj{SiQo~>ET8I3gnl1V449aOb3`@(fDvPzHWFS*RWG* zUOom6f+aiKHKd3@VnRYfZ&v{rMi_)OqtqAFAFOU}R&5O^oT8E;z!&o;%x>LW`NhB> z6AR{R1=397YbEx`&Fu{H9!8}wpQ*As2p8|3Xxl?H7uYS(&jMDk10(N994EJSVx{(u>O-?p-M`#E%^mq|)VuU_2bQ!JvC zK?IN$m*r8$k}_Q@I6g0PaA6Uso9*$LK48@bj?0@$EJ|T~&2+g_UGB2G!WF}dbs4EN zgeUAlb7X4oFt;}Ww?44rgE`}2WK(*ma$uT;rOd-Jg-gp7K=)u!HM6j&Fc0j{PMMxO zk7!ixr`f}Wwj;|#g0^ZVUlTmahCwO4GM9u^TO%O5$iw2Yf#8b9dxht(lnd&w$OB0g z6D|!j1%saT!C|e`%44okN<}9X6%C6k!TtxvA@mV$yYj&%hJsLDnc!FtYI01%r>V^R zRM>uGmoPEC;le2F6Mzm&zM)1Uw$|s&OuB7~+woKldFX%gYRa98ldt`<_ezz6qLNOC+N4@oSfFd@0MA~^+Qs8InoY!6~%Zlm*ey{N`%k|8|&_7i4@h1 z&BnEe6cz3SZ4{0oPtiQmEAO6WX^9$QpK?Pl&x9tZ?i%srSMq06!~K22)4kz#c&CHu zxJLcRuhb>;&#Uf@YtY6za~@LB}uQcGf4v;n+>5EiL9~9lG#k$ zIHH+`ngOL!O+G^@ww2G+GTCent`Bj{kT=r$@J1VGeR!pf4!DrcRz3%kYT!}Bqk~5aj~_gGc>Lip zz+;5Rq~!|BTD?wq%{om@TM`t)qOrhl`2ZJzN^7&rT8$itFaG3!fdK;_*40R`YV-+K zH9R_awD9=Bqld>I9s@i^cuabDrKN`=NWp4Q;9uvQ<8a)SNfbudT@*6V{&Rlg8r06?e?dbv2PF7-TTJ$$ne zWE{w_14HZR#DG8;2ye=Sf;_U4gmI4rJ06Z6ivj=X2^rvh@?D9Ds{ySftIbY8O_V3r zlHZRg7vN8RBT-Z1e^m;bU2Q-`bw(^IloJZ6lu*qiwHk<43q+6C01O6;&IqlhQR}pR zdVhn_1TT04nO#@o&+E#lGgK$>(?PxJpj!3h^Mk78K7XiQ?$d%M+=mKrAJ!1}nV|Od zIvwZ>!8i(|E$i#8gu z{=hLp1$d(YL+58CHuC&+dT1n272^5nwA^E~>P+4klrlhPxtjrX4fWVwtCRV}sIj%j zh?p^WG&&Uk1Ip%q7&#W?Llfg4DuzDHk+VP$mfCz*%TgZk&_1?!N=7|^ywII&@HO~w z-K>0ye$SY|JD-J~=v7_`cLkWboUs`UuCmEM0QXLfbK=b_{CNT0fnWP=d*|5Y#bFcP zw!CxObnfi!p%mz;JzAa(H^1_O=0erkMq8F%I(sE&K$3C#$IIum7?>6Ewkss~*DpGh3@i%$?#eSy zzH8Ywt3&hp&joaL1=$O>Opi={{NQx;SC+)sq%L6CiD+D4c2rv@WbH8Azk2utuYvTJbrIhzA#KGfA*dYm+uKmn6eA2K2`A^iiFsGUUG)m z#p|IC;qaRs@GrzJP9HlI^4C@&_MUKYA}<>@o@qtHT!kI7v)g7lBXV=IbHa0Sa-y6y zr8L=^IxG)PyzspkoTR|vvZT@m^pdq^S*wnCgdW&CwP6PQgQ@W2oI*<#gN z7#Co)K~qC>1@r=|NQTFZU?6z#H$2qv=-|O`=C@??e`hcYx zOhxmW#)=b^j#Gunp&v2*6efrM#PnB~YJyr$6()yzV(JwphX!IA6sD1&iBlV&h-u!X z305aK1ZZ0I6C46GwfYMV&CfIu!!JS5gie6g487nGpmoC_IJ6+qVq=0Ydc~R`4qUvh z27UriG=nej7l7m%1t8TFK$$6`NnaD(@~qCs>oW>A&ji_At9n+6qBo#5>>g_6Hrw4? z-?CC+jJ}+^>Vs=XnTa^Oa*$)Nf^@1!MZCo-QKcx@1`!lLrf9&B!+o6ka+H{6A%$AG z0aG9~Up1r_uZF@7P$E+mSBFxWsv%W#HKZa{L#mQ$NVVJmr$88Mb|$Os%+?-OVwk@D z>{{4Y;h&bl;tlgTlWife(lT1bZSBEcMK;98a3dJbKyB?o48)NESZyJG7#aTwAt5{w zFeo}thGIe>Q*coc2PzRuO2h`*twIUXgb0O%z-I$s@#L#`teL^;uK-vLK_P%T$lL)* z{4grGwph%a;-Sh8QrQ7))CJg}HjijDFqn6Ejs_IMMRT#yijYW-BdM?sE0`(p+gvvA z#9D39KzTfeEtk(d#VaBS^SW%590QoJM(nITFvQXe^_6nLmv+CxvmvjQl+43&X( z5Ny=qKG>+ItT9*02UWn5lC6j;K%YR_)HP5A(MM1P@{$VZqny!0IfI9CMxzrm0!6fT z6*dIr$14*eVSc=Z<8ASnA2^r|IQS2`2slTod)M9)f2ecz`FYeoYJ5lj(saLl_M57T{?CjfTj9 zzF71{BOxBac)i5%IzM9#&@@VuYxRSRSSdw?-nWuzL*TU9BSAbgrC_0zn8sBY3O~(- z-tfbWVs*ViTi>yVr6i=;yTFYM*N7tb zFvcP!)_Ut(c5f8l)M0izyg9Mc3j~iHUeUmNFIP?&G?m1RkzsAZ!lR;`F<}n4wVx}o zOka*Y3*K9n*t15pv*+YzW`)Mb_f755FEJ&qYl6cW5eB&w6y%lI@f}k;dvrv&GrMhg zOiV;%wj(z>%hfh2GA1e_G9o4`I@;C7<;-@5JF?+=Ak$#Q!To$z6U*T(hH@tbs;s8O z{Kfk@ywjsjbHgPM;`VgAa$WAk!mOf^f~y8uC=&jl%J0xGgn;KHGT`T@n3}FCz|CoB zjlH`seTXq%h9_S%gz{F)6Q=ljyE5U8Y>2(UlMVOW^0KN;Jp5UYsI;X`JM8rKNOGnDyTAqaE^{cSYY9!eu0| z=OJ1N+{MF;3X4kY9`Bt>P#*rqzdH43@6=kyewjPvu;!6X^H<#-zEG9B;8gQlUyRyd z92M;#hIUqmi;LHstQqp31G8U^1{ks6;`Fn)QH)2;KnEvQ;ObVo{3ZyY}f?FPgR z7=&}rfGCG!fM);<6j$!Z0dNs<0KC#4058FMq=o_Q+_Mi1t9)0c$2H&q6W;)z&D4Y9 zgcavxp`QPf{_6L^+Twq0&~I1J-EIq?c#I8#c|ATqKN)U)Fq&UnF1l}pY3?)w8Sq_$ z|J(m0Dnt-t<#(5arhRzVb3Y&Bb%UpW27GQtnF9f@Q{$A^7q<9=fF{89KNa3R_JB?P zAaGOQw+MScIAfdDmwv~i3N1{aD)w$RF@f+;knw4?y0v&{JUH;Jj`WJH3mg{U8&7BwG4mLjPI56eMMIOh#NzvB#wu8AkPF`e0Ih}+u}+HN zC<$9~Fuct!fjDnLUH$d?3xn8pc(aZ2?LKngGt_|a;0nuK1~doChkqGVwjLrb_8`SJy<^)-*IruAOU&;zT?H( zRYpr5rSAr*JkU}oBN}4hd+TiY#9cV_pBTWAfE>`{qd~R{_))-#0g53J;LC!LXb5Qo z52nO-%MNhEA)G;o9?BU9IbgdLK{`G`!XM}=xi~7H^ z^#9ivx*Qi;S!Rxkj>THPhbMKLbloKBFt;{O9u7)|1w1!q% zNi9{hl_hoMqmK5D+CChM!%ro#O7$YSoH-i#q*K=jsT<_n^y0a?k9K?GV7-GCHcyWy z$}1~sj(1e3KXFv3mRG7|IGYT_m1FnQ;kBN6<~AOGBXXF$ib)z!VFYQU>Z8^M%6(Fu zfexD%fIiUBkADWB1U^7$b(oQ<3)J;?b-ax zd|D_pwFIsf+k1A7b2O-Ja<*~AINCbfMny+OJq|G12Rg>B{cq9CWK@^XE-?w6oXs3fc!}!&VTr^p-BBSm z_N`$_!&DWL1v-RekSipKO)Fkt9=PRb82UGkUGM;S1Ah^tY~lDJK2q zPq$jcq)#ZT7^X>xiw_B@$iMiM`PSYz|I+EdoGMVKAzS&`Rx7!71@2%OD`UpI`tm| zHqTi8+30t>oq6~`tKu&wSNQd7{KKx=hcwMMUjE>xdR^L1*Em*wKefy<>9=7YXy!<& z3d@p8ZA|jmImPegtUhXKt36#d_oVHot1pk7Bt^b7qvwP{GW2L^afRduHKK6@LzM=b z)wR?$a<3n(|9IeT=Q;VI{8@wNe*I>>HM^+~1vgO#Ick;HXcBqjSnn>yh96^pEBkG2 zt5u&wt+hDPFnvRHvg0vFVrAFLgh`!;l#~>=Yu!5AogY@9oFRo}7ZtQF9+rpP*2VlI zK%Um#X2gC;-4c3b7({XO*Xm(ZYTzZIq)u{lcXU&*L!Q)LWH4gHh(F2z?pi-sa)~1l z^=+m$It+?PmEO0zz<`AABC-6+I|KHQ+IZy5JKB>QgR`8&ewjCT*+s*U4$WRGkJoqG z^Va^P)88y_6FB1P!b)4+`oE5eiH%$S&Jq0+PX}-M^v61HzVwMXzvh+}uf@K&*7I!F zl%Dn%UmiH=$~sl}f~JQ$YUej^QIU8u@`r;b53irMW=+tUcXJb@gY67!hg>WR40p9V z^4N-us&*&Fj=rS+D&pxowO8gAjNY=QkA8Z+<6D=l?v-70!QL4y6OwMWTaiEYm$qNE zsJvkQeAv{>jdNU?J61m&-n{9w2^$`1wd>2X#kb!cQ~E(@(nH5K4tVj*x*1njN1lCW z@lR3Xsy-?-56f^bJ$Yi6cJr}WeKLj(AM()L#YtJ3n+HnPK79?Qu^(X?J6t`DNwKru zx>(%z_dPl=Mwk?PPpvsd{kKdOO&st`-8hX^pE|-}UyjS3nm4!*Zi4$vWYNy(aEB8n zGn~lUI-QPi0UhJU|F`IN&qO9>WYq&^A$7@k(MW>tRGVN*z3=1n!7n|Qp{UdqN8ekAH3qXcZMDJb6ncc;G6s#-RJgs zwcE}nQ`V+G6uEh(v+I1z-q@({w!feIsmGGKOV*CsR6eg`)7je&6dfLWrt{RQ<5v%U z|4#0Y>UNE0ywUHt>Z_0)_3pHaSvK&aKEIzx{3cB^V|m0kOP+SVk-WL@zFN*99VZN{ zU+~k#!;a@Jy6P=hudm)}!n*ZI|f{K3cv~BwJ4^O_eZO}`>dykEA^v1z$Q^QoWq^l#rc~AR9 zI>NClX#!h?hsQ)aB3k9PjgHE4W;;Toa$<5rBO{z`LZfrqWQMkl%yhMhgg4@FQhe78 z_^Ive?t|-U^_O;0s;hK7#5m}x_G4+qSFl`scRO88qdAarKv$}sT_azuwl zI76Y&I%p1jT$!L?4oq>tET~|Z10VfsbKnDHm)tXSX~G*;)%V*Yfx-6Jn+4~-PWftJ zgB|(J7hnI*uiSX2->G$nj@=y4?UZ)x)+K2hW{v)N>aOvD#^E2`xV15CPfgEHY*qboqvKmQdFAEn{akmJ96r}eKjW7#Zf`lf#h!4xb7GHC7jx>2%}6=D zZFg!)!`~i%+4RI`O~*gwIlHUVh=4)P=DSwyO?@si?fTZK?m1Vs|0DRBw_lo|Zujb_ zl^Ko-%_f-emhcJBkQvb&kBk{}-cwnQL1dvB{9b83W%|{S9H~w%6|8Q~I%qihF#WuX zpEK0aiqBz9y(^v_KgD40j2{f5YZfkhTq&IB;zxPOEOR)bBb?#kaA+S6vst)+;Ryee z6YamUt=72H2h?%od=xx4!*1_1rz|!9(RyDL?fLY|55s!=jzKZH+n6mpFd*ZdrLsld|Hg)OdQI8Fu*H!oB?PlM+Ryuj#+n)HbN5*~i z)8?yfmh2jkaQxks9Zt3w@@m~Tm%2TDuhgDVbvtT?yYh>&K@CPEjGq`?Yrp3S%?E>f zPhGkuul1L8{C|I?q~+Cb z76)6@YS=kUa=;H?ij7H4Nv$ElVE=k~GMa3+4>(gkZ~olOQ?oN3S>`Nyqy46%p^iG< zNHt`&v4H`O@k-&ypfiiRYc4adsK|)z`_QZ3H4D7;@F_#;%=D@yj-GrjOLV~WS=qTV zZc@j;K9_m>yBoT8HuP+o#nO~n3uduyjxLUP1;Z>B{nutO{u&Yo42~C&djI?-ODsL+ z(Xq|DynDVVc6IoBL(iLA7cNV@etuBtk4cY&9_hT&|MySNg*q2E+4EG-+2xG}uISJ@ z>4Qbf`p*Bhc;kk3H%7ge=)V5w4{>96pEB0Y`*i7id+4wJJ-7A!EcDy%2R9X;S!PwGw!Fw9t84�q8Bzlv}ROx-}ptnKD&8tasR$2=E({1 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Private.ServiceModel.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Private.ServiceModel.dll new file mode 100644 index 0000000000000000000000000000000000000000..9372303721db9d6eccf367ca0d6aa0e820bf01e2 GIT binary patch literal 1893240 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�@k35$O=WXMJP2TQB|tm~V4WpE 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

    0JyyG9dKpehP%bzSNHXT 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Reflection.DispatchProxy.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Reflection.DispatchProxy.dll new file mode 100644 index 0000000000000000000000000000000000000000..64a57cbbecce2116fdc8717223283deaab66d387 GIT binary patch literal 24992 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 Nyi+G&|8dM{{y*zALhJwl literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.4.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..0b45903440b92c890a99b27303bc189cecdd09f1 GIT binary patch literal 22160 zcmeHv2|ShC*YI-&^B9qg$1LM>j=3W9P)G=gWH@9zI*z%*2~mp5OhpnZNg5QAP|{>5 zjWU#|C`1F|+s|>x?biL@_x-;6yWji!zNenG_gZ^=_FjAKwbx#UrBf<|fglJA-q~3Q zssbVM=+WR`gBXy^DRz|;y1;Tzyb5J;Puy;sPcSZsO!6kX1>ii~0s~1DoI4Rm4hh8h z1mcX=+u{O9o*k_=gaQzhstZVZ5XAn+ zl)s1JAc%QUPG*3cEy9&4#Bd70u{;2Pw8h^FFxrEIpsmVeqCd%l-UmHE2HytpgLl!R z2SEml(En1j2N_rJAbmqa3{bNq1PyXP5DSg^16boADCP(H+nCbH9?7=zg*)3byVdim zU!LAjBr^I=hrcuguhS+l@$$Js-$QXhf9bqkp-+>o59!OW3TP!d#!e`c4Oc%M%x)2| z-}A!grG1c~n=k&f>$jl(1IwaPJFcD)kdfsL=9%c)l=1z@>DhG=-?M}t2}WkNNL!3J zs4y5c8E?t@xMIcE`dz#*3Sy%74!s=(K|=BnLSvn$&G4Y;I)iKSJ-3!@>x zk+cVm0hP>=K^?!RgJGoSr?p5g0ny6*J`F`%k4Qmu&s^WkC1;=FP)B}u`TVJKt>Fh4`jW9uUUd- zWt2ze2VraELDSm&8OJQFK`{2TQRr}T1m%8DUo=;={2)7R+~?&48uPpIn|@R89Q{xA zZu+@iBp-S~9%0aPIK$lMf%%$2&5aeZ+U6cW!~BBAFh^U&&vJlkSpUcqXgbZncC7&l z8By>c@+wqK8CF(>Rq@&gg#q#hum?=8tm>@|5f08@Ekq4kCQ$92^3o@XS(yE9|LR#knFG7+6uK{=w zK8L}Jq%D4h01iPHQFA?Jgyg{rWrVD0Fa`<)@gp?YK!eX{@CywtK_RJ%G-ynNMAQ}( zBNRo0R2odC!4m)?t<1H7j7}_y8~TW1h43H_r~vzn;zX;1I1qaPlS8vY2qp!!;*f$F z&}y_Tz+cm`wE#my(+k*UuvV9f&*gMPdw?&Oqhmn;V}$e;Fn=(*j&v*<9Rj|SvVcW{ z8B3*Oap)w76UwJ!2hfMWh+d#$>F7*=H7{WK5D)Z%j+KHmK4^Ra%ZCIYc8R&3)u2lu zAqcmCRY0PU8XfBZY2uK@0#*UO-II>JL0^GnAqpLPkG>AcL2(P%ZD<9Qwve*}%-{(+ zHihnj6rh>~Y!Fg{9xh;`kP0+J$2c&fU@oTVm<*;1QiYa+sX#_v1~UleLU92bg)|`} zI;H~3X+w5&%m6bDt%5x1*k%k9N(Tz3V}Sr$10~b3-2l^v@(~P55LgRl$Pl{l2Mja~ z8KQrNTL1+O`O@fr9iJ;ZmuD`%xD-OcK*tu<^IxUhT)@$wE^UU z^l5Q(8r(pGn*ij4wgV^v`2ffW;UGa&Em|3}g)#x;g=$gCU{$;TP?81}ptm5dN`tE) zK9FY>ga^D2}|7|WiABsQm&xMVM z!5(CvAf&ZFCt4CIZk}!ww?C&Cl7b@0KHl3Xze)lh7r5xN=KE<)24m^5sKng&LWUN$ z$bk6!xCJgsT<`7+1_4@B|NK~P40iKg{3Y{rJ2$d7krMo$rb>BZV6dAPQQ6bq|EH|b zTnc1G3ZxICoBQH1o1Yɀ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 OyIXQg_#$)@0sTLk9O=pc literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.5.0.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Runtime.CompilerServices.Unsafe.4.0.5.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..0c27a0e21c7ea37e109b34ae8fdb80d298890785 GIT binary patch literal 16760 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 z zJ{!$4*N^^~H;dooLd4x!px1|Iqu00bmQzt=v-zbjlB(=ryb!D~mn=9OHCd5wB z{JQ#g^<7$%eP&NdZ|WW!y|M51i0$K^zZv?AaF^eu=wCi-MLzn?to*>N;Zb8QZN4;q z2hBE(eQKBXvGJ2vJ5L;O<@&vmhxbqKnRbo)_Dl(1`^E^nuqfr;6?AUwm*nV@xDCXY zoqVNp2HVDUA+in@v<(>VoIQERu6Xq(rETe|58{^VoMJ`3L-wpZ_T=E3=lU+ZVZCC= zo-aKkt0oPzB#3~Lq%qIO+wE09(sbmSSC6kt9c+7?yz6?Tv}E4qcebnjJ*?JcZESk& z6wu^a{-vR-`j;h9y|-d+%FOV+>WP!DpT1gZc_ZYH(u$`{rUoHhQx9YF(zWSnex`$tPzu9Bn zr;YgaY=Pe7b=AvS2ANy-^j~bOaiDIQy6%>Wjc-=BeTvU{TxxMKxOq$F{i&f2QwWJl zF1UdtsS8kNYtOkvxh>i^#zGWM{~y^}Vf!YRB+bC8bL$Tiz|Wa{z`iq5Gm;^s$neS% zr$Zc4oYUz9ScD7VYEL-15pJXtaHdceL8AY5CndqZcLzA>4sdV>u;wQp2+F?dtuHY`w9;rYcu$>+cIko=P-QdXhT6**>hV zzTM+Zs-fq1`0k0new0be+LYdQn%6d9RC%}8{`(tUQ#SKcoF=R*OV+Wy>^blKgS#qP zS4ZWn4X}Ewb+F7J``~={mX8l?Vs%Y}qbyhF3LEtY>rE8zXZo{0Sa;6 zA@w=ibj&@=fE5YT@ArwnY!)~;?C7p&kKVM_i@9-jS1lf7#_Npm&))GK-K*J*OA>A! z>bm1V&nuCEkKM|3o>&Cb81D6*(=F9IJ2SXCNWuB*&TD`=XLG$CQTUD5B+%SY8_TUx$+!8>9( zyZ>xYmyo)9Q+-R0ss+_wS?gmbUht0pegY$=zd?NBf~A8)9Exsko8JBI%HgjUZmaPx z<1W6`cy0Qx8gh5|0^H#fLRVQ$cFOCD(cvJ56#U;0ol%dD3SDrzrinU4II`fL<%7Hk z4RX8Jp_9!N6FMDxzY;+M7w{)HC$t@av*!5h>!LLL-qXtCtcw;Ujzlb3!;}u5hzKbQ zE(W*~YDS~8? zU8XRD#}?)!XNs8VVjkhy(Ev_3n%Fap6@nHCR3L~;g^6+?@J0rw$WR!00hWfXm<;1@ zHdM;{roAd&ySOnT$B23Px;V{znZ`oBd sycgzO%F&!t$4OxJAN>A^@FH)@mxCV7 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≤=~>Kxe(a#Ni{0FDZd{=!XHnFyf5Dj zb8G*{%Tjt~dz`KLo)G?+m3sK@Jgpv@meug#x6=@wo4%?M9ZU@+Fk6 zuiRkn8)~PJE%e{A$@{QXvG$P$_Dvq#@CDS@!3|6LeOi;uGw+XHd!|6Sap?wj0zi00yLi^sd|k&Fd>!vDlwh6xa4 z{`VUqrEj79jZDq|J(E0ovsg!5zeGLxjg&>mCbScufHT>%O|GFxTajE$!2%)#JCKmrpG!)_*=i{=l#+8w4**h|57i}=bJlih{)lc4fY zr*ULslf_}>&CVa`3l~~cBp@G;uThKTqH?^2^RmOReZ$Y#nX+*nHeBdN6`)5pO*lhH z)h9c^b8b$mw$xrGyhp-R9%~bB42F*>*!pxy)EK_nC z_DS*b6=>!#$p-Cy6h$&H@c}Pxzf>3>sEN{uRF87e94ktVVa?A(mrC85?1Ya5-qR#m z={5DJtRQO#%9_Vt{vlVNpUqXOondv2vckonBcN}VX>8>Vkgo|Yl=}dO^m-!` zy@nv%6hG9OIb6yuRebWJv@ipPje82CBRy#>8#BMgso z)2lWxNE4l6waGsWwT#3BV;W`6%M0VrQBk}!JA`06JaPI{>Q%<5+Bn<7%WjXmX#Nk2>ZaK=^WJ+089f~W!i%ifKPWVe00X*&ONlJIA&yjPS2#H!>MIO0hqAp zl^Eedokyn(7us=GgqaO*1>)slIv3y9WkQI$3ck~Y$7=EJ2bz(oIktCW=F57_WQDKWbANlL&{0VU#?JXsW+9aXZTNx~`3VvS*f zjZNZfp=85z%CEZ;TN?uDsUXz2C|npJ-VegP8*$Oqofci8m=&9t;!=_@_o81hgYvQLtwLk?$VrGW&nCQE5Lv+~bM7~LBwF0}-NerhQmf-FM zc^LAFmu>#OkCa5_BMv~fIMJ}s0*{nyrsoo{#IWVS%VptpOg4IBi0GWeCUMt~tRMHa z_-BRZu6ge-8fNYFTbmn~+xjfL8|?SR&Nt0{4p*MOFtP99FOw=AKN#)!njM-yKJxgW zE!{q?%9@?K&K4AWbf6@5>a8oTd%q7^buD93*w*fw|AcLp8mNl1M^@wrLwcDmE~?T@|Zy_WR%Qc9QDW^ml# zbh_I&IJ)&<=V0*$+F(p%gJJZ8@fMDrso|jUDSdD!irs7N{6Qy;_-II zyu2P*<}!Zk&T8ea8Q^&yG=va3VDw-92)q#dVUOa{1@Zfyct>n`KBeo5Z~xu6KZdO} z`IDxPL9j0_tt0IXwC_;JMQHmZS}*5ap*VXe(X(Y|?FoU;#SO(>S@{ z=TsnRHcw+ly~TeqczOYCfK#Wnk(X|21zO-61saR@p~fO?MwmWXcsr`V&+b!OIZ#(RFYT`F zf8LJakj+nCNch6SQ(j`i$aMH5~f)6&9D1S+=Ji*3Tx^5l;#fqSkb#z7tx$4N9Tjv0xO1 zVKX&>dxxGlaZUap4sVW5goVW7-PU4W(ubZF8On1y(6034iiNjx1neptRz)dOp?M}B z3t5P#QmA)b=xrxZ1pZOm(@Ek&luUmufW~bEbg_d=XOmq(#HBK_@r+9ZI25)b6b+q7 zW6_GUkuC%8#EyoZG5E$pj|@nP!JGYCL!TD-wnln0=VpN$2`OfLDOCof)29`V@d&6f zJu5`MA_Fxmg5DLiZ6vQJjh+9}XDP!w%^6$$)PG6-{}ucH>K2&Y9_nfE{`Zph&l^0O zPVPGSCXPRAmX@@)gEd?u2$7Y{o(6q0AFZZ_o|(HFyqXzsZn~tUM$j#7Z*FT2QgN!7 zJ+%T`s#~rpX6Cx8e7dS{-yZf)+XjEM+!`8Cr&-Gf_Zq(=n`;rrE1=>tZjp7(btqmN5bQq1mWK6ySgOmCUtmg! zk2BW}@{Vj_Zf$NE*)q0OY~(<|Rw`&7zvaK8S!J^qX;vvf8`m>Fvaz|Lh-%y7a|>wq zH6b<8l$e^_CLt=iMObvpgt)NQEn7rJHZ<24D^#n(3Q4Eb%q2oSbps1}rY#Ywz#arI zO$lC=zPwfbrpndCWCg zhZHsOpE+=0XyC{{MpaqXd+qGD!_wajp7+_DZ#v#>oVWFzFE%b6zclXo$+nk0+E!bz z_qn4>`@FftXdOOsUSj9VANC(Kc-#69L(UFj*WdQ*I-|MAVYc_U$FmU!&n_G@CoN)c z?gvY^{q$G(%?Bwzx&HiSNakGcD&xBN*RcE=G3VfsHScHd9GJZS;|)dML@u228(ZTF z`sbrgE7Mb-o2fA^AJV^iJ?$)y;hIe%l_nGCDrj`3 z?=}7Cy6?_Bd(Hgkq!)u$a}x@wuM0K@7FVqwbL*SloeR8v>v(tM-FKR8+8g^$6>}Qp zucPZ>?q*I}+GT0tBB(vmJ38M^0 z5_5lp5ra~%_YeeKck|Qct}-@jCbyLe7&U5CMFrr}|KXBd<^a;Sp^i*YDne^in+wJx z%mpvz|MAeNvBL%#rVMm;jh!`Zf#uk_Ds5j}`FYFE6YsuN{hJy;>JwYtXmH`6_o|ZX zYZkraYsnb2{eYvHI|2pb@yzqnH4!)7sVZw-Yp~t=( z7dK_r>8}dbZTo9?-(HLA&geKfJ?3tw$%lT5Zm{+I&F5YBg>UP3a{kctkGJ1g_MTs1 zFZ+?69fKP;=sz}R)nAK-jJf!1==oQ6jXGu+ygSTu<=LdrL+gLu{_>~G-}<4&%;-%I zKD(XOW@$jf-Wxmo_?_wg&J7*nYWMvzWAxq4?X9<`Er09tg`?iS<<&0Y!{qhPgzm^Y zv7y<_+5SsczJ0Cp)gN~HcJuam5OezEdu{#U#eRbqJL&dfLeaSJe#yPh9Xf@%o(V-| zTFqSaU-1?7&2_~=?>?@J{T%GJr{?C^Xsb!~V=c|CA|s>Bk&%(Hq91cZ^Y{t>72Uke zl}NWr0lFSNQ+mq|S^E%&{I8B_b(8xid=EV6sz8hcb@Z@GihYFwHo-?7*6mJKImSN;-J#MURNcGw<$9UUBU8_cF%z zEhy}nvrGTkiVYvJIUm(^Vu}l10A647e zuJOuCeS1$iI$$yW4qJ;?kF`GD)H~v5-T7Ss3#Lq1)2n50+)L+gPkL>pwMIK_)@Psm zkW%o>^-7c0%-WoIY1D%WuX*lpoc+14asKN63e_C)Af6lLamHOhp4# ztMXR2E<8V@R^~Xi_A@7Y`pfJ2t=1kHZ|+Tl+fN5qw6cpiF|thm#F(R~yYvCgqM};2 zGDkOyv}9zrw#H_MWm>b$VKGtG7Gahau~}hRt)pYjtz%nf-H~mKl=QsDzDzwJKBbHK6hzJ`xcw+v1{H; zNqgbkiGJ;#sy$}#ETO}w4$nFp_q+3!`Qi!3#%X6p)ca@Z**j;$&ZJ-eVN}+cZ#Nm3 z=eo|bSKPQiesc4<%?dyD3;pV+spo4oUbk@iEBnrSRR8jNR?y~Vr~fpL8J#l85LK&n z%8Db?3Vtx29Bc31;gw5;`4tt z-e;1h9LZMDTQU~qMF z)~=9OhL}v97LQELYhUw}{jqqleHYu$ z>!m{*Oi6$JG4$;o-Da%%u&CRJSG#z8`%l9&uN6)?y4IQS!dK(J`}4!=Emj^JocR65 z_3h4v4qaH|tyK$n@Hy5+_V*6?n`!NdG}j?-{GMptY94Uw_>7Ey4j)YK9GUWd>Rj%!Y{RG-4 zh-Y!7e3{SNB||#)ZM^WOh5`4Qp7TnbKj6YjbBgH8lFV?QOXHWuP44jczD%)q2TVH? zmd(9bn(VdU#k!h1n-gRVFV^buyqNg>4hO%-y>l^K7D*=!Nt|y%eAZep4~pRTfgh`J1x2P z=hfeToLncS?e@N}{E=FJQqz?swdS6m=Mi%KeDba7%MM)%SoL!9fttr>Ip#MVk^gFq zTebd3J(crWy$6Fsjx3-4VdE`DnSB$M_d0U>mlgf{o_Hn8~bK9Jf+r78Uhz_*Y_L+Lx_lK;%?4Nf& z@nz62Mf-GHzr5T0Or5E(zwLE5pmE3b7jBzzzGfBpK^5A>MoHHuYCXGh<0DG=QFx|@%fa4+k@}; zIA-iw(Qc!rci8ONX4{K@4luuV=lN3$-?>zG;q$kS2mEP#FEzjS*2LLw zbY)L>$@Xj9BzyJ33tt+>KfV0+#JBvqRP`)*W8!apM&B1+2}v)^fLdX)FB z@JhIp_x4qsFuXVXIWv!6M837YZv1TX_!-4jD{{ZfGFMvu>&uH0-=g(_%bs4kYJGQS z|Gzu}!maBi+c4CHix@L49c$@ukdE<~98_KwllrycwCDdG3?AI&fw(NW)Amq z%-_DO^^%;hPkQ-W&KTSwaM3hVhw~maqHcc{`Si%hcFi1>4qPs1_h6D&z?qM|EHnT3 zYJ1R?S>+A-QXc#sg}Rn_PCw^bM2X#0M4|98S7 zF5aFr`LkYqFTGYUFYoQv-B0{ov}#_T*1S)c0>RvQpdL(?<;K9A9K4CV&76Iy zlmD|d4!mBk?y>k^n*FlludbgpKk;=`arZ_|yEaH4c)9P@H-A|C+Mzb~563rl8T@`9 zS$Ef~C3_mDy}Nl>yO)-Yv~0C43wU$a+Ae?i+y9vwmAB>onO+B`*FTv3;cFo;`e$j{ zg>4)#Yx{+|KW*D|D0A!RH2sOV@RYabZCW*Y-8)Mc6xR4=&Wizs^&+BH8*NJmO>eks z>D7sc>Yln%yXV1Ieos1kQ?S}!s`T7}+yg(`F2A+#^T;L-d_Ea8`0E}umwkOF;`I*U zeFBFc3|R3`WJ%}*b4ln6*y}Z8xc%>KOz_>`a{DIk&F7`#m(y}h+NAc>MpjmBJ?pT) z>)x8K6zOAD$5x}opqx<`iN&Dzs0K}rZ))k^vRTKiXTJJqcJILnoz0z8A}UAX3V3PN zV*m2@2$$6;4u05TOg(>MGgVh2Fvmn&(dQ@re9iZB!;IeJ#ztP*v~KmFSGwhC)=bq0 z2-m07|MQnl=JWeH%;`61M085ZhW;b}e*XK-4L%9D#P)k^`0LWgu|Kp4nS- zcx}JM3&Ym?$9!{cts}J7!5d!fTNO|FNZ)0|U)8n^8{K70-PR{f@gX(QlK%^GQ2UaArjf2zCI`r7yXG`RSGe@*{ab9YDeOQ~nSQ{DTuzfw9mURiQ{LEFuL zcN*08?$#Awr(eAI>^J>RUR<(wV~y0pQ*(~I{OU7dXKK9V=YQzCBZHTfG^%GV(KK-P zfFZI(Qw=OXZgVsL*XH<&?>DF{?iq8iTWf7(B?Wj0us6k`^pREg%>X>ejtz-c<`x6X z+1v5dz$vLq0fg`e{XxG_%G^axTfa~{&LpzFYH-=%?n>QbMAs$UuhykX51fl ze{t;>&y0PuMctQ%pZwNygKp*4l|PTzn}0GWZ~n-{sdoyhRsY-h#@0nkukBg3^G@g0 zL4_|T?|AO3}Va%SbdKb&+NPTVyszW?znLg-p&?S2<_hQ;*kGwHL&o$7})8NX-Axqyuywx5{Z z=y!8T{lDFVP$xu|)c+a0^GaLOy{Yo=-TTGaFusbvEPtiuu zL+?-VtqN6Mo#~kM*u0vp(e%pV%y*p*<_6B=BX1!8eRPA1)A@>|pn&0_r#lk5II={E# zaQaITZKA_#zdZWRxHWZ3gl%IE*Vw5&)cMLMi*Mf5gU!cDJJ7ZJ3Xj;I26+E7Zpne42mUze#;I4T)S3C_g^59X zP91t9MA-jN*S7-ZL@%t{HR{&K4VJSlAEh3eU~4jH{MA;r;y-u%8c^wqyt*#N>Ux~G z715AxEGhQg-6+VL16uV~@8MG!6ORsQefdGo$Aga_*s<=ty#b3Jf2%jzY>td-mf6Z2 zlM!pRgvGSZh{0BGbgQsd(Ji9FvT)lo+Y%KO80m4mz!rNPNB)$L~tXKe|V%!a@^-}U=AbG0}9Qp9%?rXPe z_WdpOKyDZP$$f`^J%4ZUp!w;3twML}69dk^QZ!{}_PXzOT+#HY|6aTLqvP^7+`7gF z&RaaS)@PpckG)bW!MtWw;QkM~47$-QX4)IG`nTMhTx(;!L%v78F7aIx`^ScQ2WB;R zbNsY3jcZ-V4tc44_=A4h9(!yPmPTFK`c6bj-)9V)t4%);lKGyq@{gy+G^)~cLE>9c z6WT9m-!ExY{g>`<_T4}ACu6lHegX5B6?f*uwLEyQ+H@ zRb8`t@@H2|_N?pEAU=3o*GZ!%AG>}0wGP$4sru5z8E*`2FlFddYxWl>H@ax7+dcE2 zC3CCwh~CzBNYAgHe!tbs2jQnTr>~43esJ{B%{zwAnvnORW9{Wtci%W&<5cT=SqJmm z8-E%%Ve|T(D?S)|bV1*hWBMQV?~-x6?$vv3_eEB^8PPs#RZIJjln(DD%6aGM#2-*V|W5YmRD{n@c>#UrUh$%wC3?$>aL<%5KM6Ll}?oMe3>;lt-r-MEM0imyY-JkAIE##nG&DoRzm zGkNiB7dBa^1S-@}^e$hp(37O-ZJf~y3r2!Tn`;vYZ60dacmc6id#UnMv)*SScvlN9 zF1~bFlr~MLTT(3_lstdm@jTK!C(VjN`1SGVuOkCQWZkA7*=qdbWYuXjZq+fev+E;* z#+0n;`g|FlE`!w4Pu0%$&dex9UVrCR;uXa7POkWt*+i&j0OLYB%;;l;jBuf-VdGP| zO~mU`JlW!sq9{qd(BzJ<;De-pi;;6!-oVocn)0V7uLwsr}<{`t}X0O>%a@x-x8_09v z&2@U3z`8j{oXsfCsJfMY#Tlx+55buC)zX$$F}=}4jZ39dOmeDKGL$KMt9-0$aPb^; z8Rx>*s3tbf)*m(KyMB9GT@A=B2*XaB+%5X{;i1iNT|C-rre_8iZB{b`X0+mCbk(_RPldS}Eja_m4>ds~;L}O+V znn2+#!}qFO4YPW30;FdA-DG9CUBh{cM|w@V)P4|@tb1w2RZ+DQPi(i zA-1ugJ*LA&SQ-M4Q2OaGfyU5OZZo`-GgJ&P-adg9A52Q6sT7ClhLZ;?Ke&(WWpH&S9GCSVP zIv~R5rmB`+@1ZE~E=JVR#bb&$wL2be*pJ8&iSQ?n$uecXdCcq7czvlhd{I?! z;G0ZG6>`>*yKuCKcc$aRB6(3FUwnc(xh&}dacB=~1A<|Au2J}vN$MjtDQFY4zUe{X zXvw=i+K@9UhLVWOyo`RuOT1qPgrwPQ6H1IiFFHEqK6Pz4PC%H0E5Ij*k*86&A+0S{ zUmgngJL*L1qmp}V^tga^W`mjbxu6DSEAjXs?EA&93v}s8yhCl-@g1MdtQ1B}i0%Z- z5xNm}5*A-&JzQ;R`FO6si3z_NtI$l&_j$k?HXZ*Z-88Njrzc&t%4jh@n*?=|GSQ#4 z1Bbt{I5}Hh#f=5o)RmEO*VB_@?PM%#!TJeK|K-%LHTF+Y@x!04x-(8sNhEqOptgES zIWJxvD_Z+@^AoB6l&wtBH(&<;bQl(U)xj!KwlhUvL$k);fFs?V3c>CP)DT5WI)Z5M!{eYF!F#QxL5 zwVNUQMh$qNv`j=g>Pa>)>oadZ=`WD+2CkOY)h$F%9l-E9d5R!pD0Q+iJa+}BAv|e(3BOWt{a45 zcFgzXvR)g~Egj7dwr$R!a`eW`jJON%Cx1*D+VaMFt#934X)#b>A=ZBGrstzw4zUZ} ztbTqktcl~41@w{I`@35(;@*+E>=y~lT#~O;Quz4C$E@2; z6&!|FStW)=vpT<7^is&!5ivMi2><-$?y0JR$IM7$_mw+)A zR}PH@G{1ZtMez*Ae1&e~9uJdBI)+9Kz|g4d*JOBjU|>Om1dqY@f1&Nbf(FdLXjmY) zc)t!TFu2DEN%t-cN-(p);0l645HF~5oZvO`^UwiCP&`}^b@@K+z-LoW5OJqXX^}Ut z3zO+Q=`mMbOc|V4}k>TIJhgey$g8%Ep-DAz_nX9F#l3Fd=EKq*9ri5?fu$| zAB2MQnaL{MsBTEJO@E__UtaUGjj?ytrR>gz;$Q;TXS^?>gv=WoMlI{FJ(aT&G?}B- z;l+ouDljp|GQT3B3G=oDjEVteig}BW09~a+Z`I2riAxnfMBneZ0vPaMGF8Yrrj}2j z+iJKh5QY}23x+3x5CJT%mKP$;(YnR$(Wj&8p5>TzTGBZ3H8HLR`Bz{qzp2*oGIL#^ zc41_{QG_}ls&%f|Y{QLJcFy4H{i+*^>c`J?QrsbwyWqEMQ;Qd;>^s|m+Hf3AdQqIW z;3)uw&%M_mjC>M8jGS;k`fxI_?btX>xjc8N|9n*zZXFv*w0qmP%GwrXv$J$}a0xUy z)c3*}Fq*_2{zEU?Z6$4b10J!cCc?nS%5=)Vk~$S^&3u~RlC z!sP9%B!*}IDP6bk6}LkdKo}4gMu_hC(EkEm_d8>Q9yD#ogKmRA=vV+91)#&fv!Q4} zcHc$f(!qb%hH9bIc0H()mJaOaC%OLx6RHJv{`_J>w>tv=k_jam3pqnJ+%%XVkG_m2 zo06H%?o|3Ir*#=#-A*u^zqw}Ma0Do=Z?tK#!!D1{xmPvkrE-s~R?gV#8W0Pf!6;L& z|DmOn*0_de2nFfE+l%Kiqys_ zlBA$thIyc^-{n8H|JeNM%L`8&ClsK}#c`~C1}{4<+=##O$p-$A^IgO#-VMDX*yfYb zFwu&0=1F}9$0z4sCE7&X+Oj+6_o49=X(Z3E)bx>4m#tE~*c}?~WM&*&^Ye+bi*V0z z=o-4S%KS~TH)g3R8yXjsRh7zEh_86P?6H3`ha}r$?$PtpD@!%LRz}^@~OZ76Tm;6MMe`7~mZpW<8^|>LL%OqGc*8~n?%l8kpSe&Znhj6gtaH6be z=@sh}?h{}0P8O^TxcFMyJGtefU*?kBm#UaV)Fhu znO>r2@D&;2u>|3%+k>Ja)cnh}FkN2umFM?0-t(0e=l8{x#DW9}HR*NXn$L z0bWujRxWFs5eqBBRHJ{mRGUwJyI+?`qT=u^lj|>l^@TH(JNk*U4(kG$&J7 zj!42P+YJdsX35gDknd+nc#n3M`XX6~%ioLly*3XYa1Bx0CcfW+>i~5J)&a6l(!21k zI#*lms89Bf>hsV3r5|iw5k~^Ms{p&bEZe*Pm*W4YI`!y%)SIf)XXpA1h_FVMXlb4& zuNg{h8#dNkIi0%5T3<8i)3s`;S2s|voA%U+mDWqOJX&X8L%g-T1cjb;)U1Za!#W>8 zJ`Q!v+M@5WBAV0#cs7Q;^13*Lj?K3UN+DpIOw*~FP8&Cybr%Cud@(3(>afogR}hIW*_F_+dD^_Om5&`y@V`nLaC9-9tZ^O2{A z^{#razkqO%r=!q|566re8M8^zFX$n1c8#QAHFZz-bczZ5rsxmwl*2RysD+tgi!%55 zz_c@)F5|_ptnc#t-;}NY5Zwli2H3T-jc)IX3z+D`|6AhnJ7fPC<^LHHvy<fP$!6%GUYx8xf2g~1@{m(8cwdiT%^}vorI?~b=2G7-7RdJ zo4zAx6phg-kEA*ZO>I8MXq?$i_fj}#s&?VgmWS^;`JCvK22-Kw`z0-r2~^&NBZLLb z*g79e0uI3PRdzycErid<7S5l@=9ncuJ{;2(aH*e+QLSZpL|o6oVWr!I>Wx%64mPKg z>!ljJlG`6+k@e}w7(2!mb~36&tC4~{MFPuGxmo7&DOzdMq=}X3Y}!S$0rJBiIo{aO z>VKRV9)A%2f>-jKP0yu1FyJJ)-dO0YFf7FqAWT|38|uuXjgOc-b_g%^(xtDC=@>jW zFnBfJsj!FB|9{Ja3~ne`XaBOGk4KA>T#x*)Ucw{Dco=T21!LBUvBfxT*XQW!EOZ5c zF8f=I_n-CfY3S(@EH_v>sryLVqv2XB}Kb^t1E z-}dI9+<-6vgaBtCTObACV4&D5{QxO3Bmg(wKLGYJ?i>KzK!>%<&VY3$xaJN6tsnH~ z0l?%P+y*cr$OGAb#NG5IDFry$|2)6s~DdfOz|5cyuEc z>3iEm>1;oI5SGHEF1rzh8lJaec83*WUK>A~B-FF&@g(-E#wNV(X7spzUWQC&R0@|Yqb&?B0$|)vJ3uOn?7KVz_%W-} zkfXz0tK5uyM#aP3xA^H$e=}~L2D8X>=rn^x&a9U+fF3?D0OSxH-36fA0dy;XF2+Cn zTeBC0MFF&bmhb=Kmj#k$?ot9Nh8b51313C{!E=SqRo-h3IC$lQqO(o@_ymPLq#OvH z?@%BLJL^oaFqtNd=g=?Y)*l>vb?KXz6SWM@mP9o521VJFm7|ol+F@(DRjJb~e61#2 z5D{}P8b2*FH*DVXCWgyXvDq6!W?y8b=Ot9kk#A)Y0b{`wa@}kLPE9gp__tN)sjy!! zWt_<|7!Rb zq*w7=MUw_3z6O>~z^I`xovq6^6J;OjK$R)de$zv<@JwKsZiQeF)9A{DRE@fid`zz( zYb}QYU1#6c`xh9VgvJ=E1;By>J422aK z@2dW2C!k%7&j8_UYtwFWQ2Y6(3e(YlVGE7@3NE5h`d{}fXrf^tmU|xASZ;clIO(aY zf?M1^D(4 z06%*HHWn%<#=#B8{#S_apPriQbgVg$VLxXXo{4KLFeeb5VgAP(zH~lT?rPa4A~n4s zfM=!~gIZGKT^WIx3~18c0$L~Nh=>lP<8XR(nFnJ6pIfP)gOyoNd*aKy=*ZMoh9^Vu zJZoqW4i=7sy35K;OvjFRG9&d2EM&Sx6i5%CWN3?q6rVHJnwU5aX?zm~s+KW&ZOd4T zQ#cfh3uJ6Efz3ED?v%imja^Q#E4@BN?=;bg936jJbjvt*T@H6TF7rS}{CpfcS4P$h z?9=pUYNrPQXQU2rLD#|7Q1~(wTC0$-siE*-9Te=r>NE{~pn@yLNy8!J$-_!LG+8V- z8T6lLF9`=O!UWC5Np)qQV;&orjs>9YAz%7@GHi$aj4@6Drt}z71=oX7rz{?-k?X~T zNUF0g3&wL!lDdC(0pw|$9*cdL8IAeoP@RpWXEF2~nrLUo%$S2K8LrbCqp4%&;l#V} z373j1V-%JWce;D5wp{7)r~4P%;R(T*sEYI^6yY)jx=n$&wxim+pucP=DhH1-0d39r z7-wk@9+%AQlr=-|{e&jFHRI&j(z&6{^<4Xz+MjXA)kbBw)0<-{Wi3!rPqD2t_*`WP z6qmv6Gsgyqn3;&afJdh%IR)u-9AET|L%oq2=t(bT2aYzn$DZo;l<@%nz0b*5oau5% zK_R`zV*sX8mqSYYTe@?=an=kOr~OaTG3g7iQMd}vYT)Q$>&?Pu10A?%jDrnRE-k8M zR2DDu+sMKMdkNalvUhkHV~(=xC5{)cDd?=Ll?pCfNg3Lv<6)_FSsIQ6)xc|*O1nc! zqk_yPjX7m)Q_O0oMxwP2g{=3Gc8Bha|JQc>d|Zt#>`(q2){h=yMGvVv z0GTn1Z{Ug^5;DCq3w-#%jMz8Y!2jcOs=enZ($0)E;7FMRhLp<#e%gTHxs&HSGy?{m z68yg|7c+ACb$QjtW!z-2* zKhsYguKP!QBahQZlaDevF8jQ3mN7D8PTOW~w%sf?(9y|uuz`-wwu23Hbg><5nC|A- zJ~pVar%a|<96UvohIu&KsV5%0_4cz23$3fUxpw(%G>^FvPt!^Ug^uS6(1F*U5D^J~ zHNwl4CLWxOGyA0lr|$32y&h^)u+yOEj8q*Ro!+Q!1)83i-loc|;01JDC(oP#OZ>6cl4koMwbRSD{?UqI#qV=x%h&@oJQCnx4pqkh_tM3&g|A;a@`== zYjti5h>ylNG1zvnafS_m1A+bj@29@VE|`t~elGrpbHU$_ z1;g#?*!XXTnP0tN7x`H>m01^53hg;VbQNg7n7PodjSU>eF}8yZbl}yj8E7`lAf8ea z#*DLL*ud>)s^VHtuXDT|%?4(lU_012V-==TcIWDz=T5ZqvVnzNVmsL2gNiwJ;@Xm( zgKNkh3wva2rp;-O&2+mYHn8Z+YzG_Ym|;8EK*vnm!3H|YZ3i3Zm}NWIK*!~_gAH_C zVLRAB$86id20E^^9c-LoywK&$0H5leDaRDYb_^_Xj$I@h=$LCe*g(fswu23H%(ESA zpku!6U;`aj+YUC+QDHmSKu4wRU;`c3*bX+(fv;Q4@?(ShI`>xcVcJr8#@8dRj2Y%q z7GIZBGQQ@dRPCO}iC|uH;?acftC&!0MzV(KWq3Up2xw1c1J8_}$W7AQprf^lG38h@ z`rARKL~F)*j-#$@3retTyk!(IV2#vHR8Phanu~4YYB3&LDP`3+&t);D?ITRKOmtIr$IU07ZRp`c!QYNd zyTl)|yQ*kpaZk)+1BZN#?O=m;4=uIOU9;AXU<0$PvmI>I75?`vJ@-Be#0>Y-v)P!Y z0<6RQue%h)Vl;L&WRu8^b=zxuyBTtz9F$%)x$IY|d=D8chztJhg?ojAZK0&E8`fOk^PudPP z(D9V*U;`ab+YUC+@r>l-B>XhW)#9=>gC{J6}-N?>c>R6 zJUlc}?wBY~>&X%B2+v(n-Uu&u+t1qZJVYL^rhfCBXP(7fmW$P9W+3tSVGuvZnP+jE zAa`t(t9642Pwa>&PlPAJjiY%}gp0<&7dxV!&wKNvo)b=j{f)E zm)?4v zGf#f(A+3?9KulDa3`u5l4Cf(hB!(oIVQ6lLQC)J+OB$Vkw`B^jR3h4Zw0~1EUjXyP1WX;cUs^}dX7Tv>6g(neFV?KD@J$XABo#;D`#!f| z{xHm+UWnxcJZ-}0^{8iNFQhpp7;kCU6+N7aHaiXdp0eH;SJnq5Ge@>toH+ZU)40s# zO=hfYwFcNSUKsr-n{qZ&)_oyWW8b{67~6)&i-;MEoa>tz_o5l*nQ;Q2y!?)j99-}v zW1wsR$v~7ANiEXK2BDFT*I(uu$1}rk!Soq%DCU}nk0hCCrf;~nTF01;h0FJOTDN$~ z9BstDdu@b8dX9Enl{bELp?B_ zFuK^6lZeG_GM9sN(U#fRV;abL!|1&jJF;vDRWQ@y=d$w&CWHV^yY})*fTWiHhF))9^54egM%p6oBtLw#Ef&-f###ukW(Y$!y?B`YqeR20Grh9cdTtn>}WPH`|q}c4RrirJJ>+SpSFVybeymqY@p*W+rb7pPTCGO z(19;kO(WSjb4SAL7&b6dJ=?(sI_ldFHbRH{w2j-q4rK%LHnbgVpd;LNuwj~{@z}(# z0vnNma~C7evGR;3Ab#;C&vPT}Lf8mxQQdUb-HC~`quIbVMA;5D&NwWmt+`k`4;xrW zW81;TncGlzr!3BnW&^Xw+YUC)*oL_&b_^RBbM__M(hgD)_ytu_f1JL(kG{5XDX8u|0aJg>+furU6+kE=YLze z-Mq8qwQK#iadte8OLrO6XuAceOPB&zV zW71P8-PB|s*T&ebV1rXx&ba=t)nn~=Hn>CR9cO#lU@wX(o_$p+78-2vfjJua~`v4Nev$ab)Sj#Asf20AXb9c-9_pIis>quPhz;~{)t z+W=qc!XhlQ2ze4dR^np(;#{-k{ zYSTP$XVi!`9!Sq3eWH-Gbqe_hwkK`Uad9UP?2Nw<)oM(hm~_%X9Y`m&r_}sJvLB2h zUBz}ns}X%YP#q+_F>z3?2M)F&jo`fF<9B#MQoi&9^nBVf^mLB*>QTZp@Q_C;u zOP&$Y)WT=8DDU+ge+#$pwj}CrX|F`o$=Q2xv^zF=9^)IwlRlV0<2fynv_+Htox;?j z&NL$@;%PhwHK8*5B#_QwElMQ&HMW0cy_I7gV~yl7Ul&g?2ji(F>w1vhkw99?@w1vx zUAfo>n)`ARTqpQBRD7}bAOv&WObY4KzO`wFOqwAd#)m@`wz~&@9wQDYvO42nZZ=Xp zQ&qErx&4unn4()x=y9KN;k^rm%k7PB6M786b=Vqf35UkbC-mr#tJBc-J`;MlkvekP z@U|0r6d~n6B}U%RdPHAJ>kBF&95&*(mmrPg$Q~Ujtv-};4aHqY^c{jU4c1^w3;K+} zLuVtQY+PwXWt^7L($Hnx&iI}q`VPaiSzKm6Bsavu0xt9NSSm9X$A@}bQ%Gq|nE;-S zq_n2+1XN;LKDVU>5w?0vJVhqLt6YkUOG$(spc2F36YfJg5$1ce-SS>;NQYfaSM^!m z>mH;Jn0}SC&zOc5nzTbqacwDI8@y9NrF@WW$ggOu=cg?1H3ZWdAcR9^4@zr~L@isL zMU)MVFftt0MiS*h2Tse5BkBtMIjt{7u0R^dR3tQ<>0C{1=?bHn+HpI(LJ89&SUaUn zW?CU>vlPwBQ0yN-cUZ*qHTHpMF-Okk8oI;vOdm#2DS2>*qIo~ketEAFq*a{OF_qex z2Wy!ipQtB1kA$D>PNcr)!|R+jq$8EmN9Yr7OCQ+HX^Y}1tuK7abQP!dg#%1)L{nNn zILg$A)B3@29?xAk4{jI;K27!AjWh&?KnzkiOyWKi3B8g=r4&IEPJ5M0DS{-Xda;x? z9NIEn%xS}+GgEErLAa|ffC3~uo_8OVI|S)mPW!R>AlzdY3JuAi$Z;^7BOmWZk;PEL zk@3waa=cJxD~g;56FIUKM^1wI9QjofikvRgK9eHnzzR+q(1OzDz&%WD6AZ25Qg%jC zeG36^HDlk~L=VDa$gN1!>hOF@TMjRBzE83C!KzAVZPP)y!;oIlv?4ch%c@`-(|Anl zkN0(V={2}s?!YwsR6p$HQrh#l+z0P4`TA0Q55PXA$J!D-3g0t%I}vSw6HGmL%$@*k zQOlmnp_V-h;Yhfrxks-u0h|+0X|F>wPMe9N>xMUla(Fyv)*T7Uxi{vs7A<-zE8%MKp z1m;<^rJ=Tpg!TWfr@I6Q2UuK=2?kQhnN=dSVyX3NC3OJ%xLv1r?uePV};)3 zRTrl`E{c35oW`Yzs>js47f}nQaCn&8k|MO5+tO0SU}QLya$2g2XS#*c(o_o5yw=O| zvLRiiGu_{OSzdpn_AVO1Uoj1jyDAIQ@J4U9WqCuOmCE7B7dc<1O`NZd>cx>qV=1zY zI+r7-wxSw33UzKuHFQ*CIPI4V)sfOBG97NFI#OC0my#T-Iu1d)jMMJR$ZnI3zg}W! zZnNw*{gJNZ$YI@M+6+OO%aPY+#9(B1p`vCn7}-ND=E%+6d#4V8Jas)sx?A^7&4vOY zXx=-uKNPClIIVR?R!TO~T}=C%W~KCpUg~}>#haRyG6Z_7hd3=SqkpIS)Bq;D>g?9P z(-1r#JkBHdSJVET`osA`kM-%_$qhr*)0~#wwtuH07^a@(Qu?;0QiiD=T*Eh9$}sgN zM~-PurHmFj#HC!Q-sQAPE@h1RkV|>1^|iq&Jw_d3`k?u>!TXTDVcOYhS}+^Ns3S~E znobM$hq3B7)0kGds!A6tmz&m0v!=P~KBNHC+*Xr0tpU?HO(%0&l$&;3k5;)Ivhf$0 z8ZlW-b362h5|!$XfYu$Ku{uDZ=Q-Sqi(M~S9?u(4Z4Iy38}lmawQ;1~(q6TOR6NpX z9}KBj$@+2IYAX@)!d^oyLA7(O%-MzUcSn#eiX`n*NZKxy^qF3ydt-1{!j*x2c#U$m zdmq?&C#3Je)bcpeH)2RzW$$rH9+&%WBBC#1FOdVYkdcd_PXlYKab zw1-978&$zK4L?JDsD2IV*1$p3+X644c4%1F>+sye81HU%*y;?EV)j92=u}XRb_Q!9 zdK7H(AHiIv{lfx3piR9{klTPtZi}r_Q0d2`1jPCN#JoMYoOI6nSpaY~TvX4EdVT$X z%kKN+RJUt*MQ#%5;FhGpWQw`V+W_@juRT@@mNkq*&u{+5sC)cW*8m^sXASJWpr>Io zObrkJ%o)A1)Mi-b{tl$Ik(4^cPi40BeB{Km=$3@38@iLet4QyNPr}HC9C_TLchG`QDf`jBK4w8l6Pi7*#T9?XMg>XRCX-%NK)N@E^jKrkmYjMbiR^mur0=&OT>-Q&CgMs+gllo! z5@AuuI^P@90sDBcBk3QkG1+8a&HhcScd$<6)CX7>vTkSnIkE$e&o-+w>V2+L?L?Sg zFV~d_>%;OewF|GDCwP69c&f42yV>4nk!>O$X+V4V6>jY-4GyBctU)1`FbeH|Q-VFG zM{;tp7sujATc?v=7SCEhx{7ra`#;Sm&-#|^XI+VTaR+hR=J9NrJ=K7B(*_(vyOzB% z{V=b`>WA@H^*RTY#@XJ3G|u*}nauWitXJ|l%&#{TDm}vR&-)v>6(*l1HHbSRCnw?xgQ3(mUcuU|nW?nzi~Yx52Dxvxd#Or9Fiu z_aPn7lG=X^+nfkJ!l_?Z^N|_qjlmgtyB^KdJ3c%oV=qcj&5^4(^AN#wZ-|p{`oC(PdQS9BG$)(!DXHcf{X|WxieSUS2=< zhU8ky@uXeyN%zK(zN<*@h+oUO)^aYg8@Xu}8T}*h;NLtO`MhBKE3v186YvEOR5tF| z$&c%K1k+-qBBWv`4bLYq)uj2}i!Q}GD$|AXFhRXq)#0(mkBE9L6NK!n;tP30;)e0%LF?;LmcnD6buU3MJE_PI!NGltbO2 zA>3rhR~Y+@D+*Q!<;Kr}C|DzOZ;i+9 zjIU6m;7_KdjdMFakG0oNqE^!g`Z2AMLt8Md8Pg7k>vIA>;E*8naOz+c4M{>v^0vDg zK}(@wNl7XO=yx>%4k?$Ftzx0Iq&=Cs%M}Z4g>FjUj?{sPY99!Vp{pU^ex0r2pg`zH zU5+$R^7%7P;C-}noqT?z;SOza#ltv<_PUzDM29|hHHR`ozUt03t`;!ENgD_)V6LRy zi|Zu;<_kR*U4&F26zp~o*X;tKqHbT)juE;H^CiI&p-Rk`1lKd|0BUtI++@;ttdn7- zLwjAxaIfT}+EbxQi0Vs)bwX4_Dm=infJ;e*$0cod+V>dwgwRK6zqr!iDMPSNop7~+ zO+s-|AG3Lh{XQorW=@&1_k z+2N)&*cCpKw8`O=_K8q~K17F@b^zp#3du*SwHq9jw67w^;hi+QOj^5jL~FMP{3>Ps z*4vNw&a7mLy$!~vKJUr{x6rYCBCn9I50PK!$KFI?Oy>BK=hR0#AP=HUnxY+$2Qf@$ z|Mi4Shl-#l6go5!f-u^l40i!kFwvMP=ne0iG~Y*^I=TD8e}qyy6CGr#gnr50kP=d; zIi_U;pj@b-!fShYgUPgI5bQN+{!e=qx(C5~LX|oFkv=q}1{9u)^oh_V5o6rv!GDB; zkrUj5p+@MrUYEJghXX>D5m&m0!Xcp%k(KUY@RiVlE;qP`!?!{Yby+j6CsWtEM>=V=dPX@!>!prpz0?uS^e8yW^-7eS6mL)wYd zP10y3mqITgTFDnfA0b-F^2otq)3(`o3_P8fNiHY>D$RCIIH!l|YqIb5! zyPZOp;qiJRTq?9Ge=|l-Wm*i^x7zNS2$wT$Qv=hsyDot%naoa|1al>FLvFUhd!|gc zL4MB<+>@Y^X@{cTPJx9&?yN`feZs{|hZN1xG*}`;b2JTBm`L8!)8JmoMb5kZrz9VZ(sX!%X)#o_-sheU+az*E+CKMX@S3D8$vfnp0Xu~<`(>+{ z@Rrc9q$BQ`ut$i_YUS`Q(;-ExryTZ4T71SncR3tp+NQ=}4YS}IrrUsy8kfTniF~~E zcBEev>EYDYU=C2`pv2 zP>)_-&pfzH$m&Nl&yerw9#6RD!9t<8deq0X8--G_hWW5usH?8;nGbgx0$N7|0J0XJUkVfjE3&r)B;kgT9nRf85x(gB{jds=DkmS&6_dSpzk+hFi zL8cI0HLrqfiKG>|3c5J7-n|OCGErNKU^NsN@=fbg3RTeC5FYC`BlTl4ZK;AGLR8-x z7%4>ct$`AgkH>5cOky(qTLV*ssDEpLzOsVOadiA#3$rDS`nL||IJDY*A6zAoRNn)z zP>AY#0B)2>>fZx!i$m+(55O`eGu98nT@KCmJP2zYn(tW;4;%7b-S zy&yEY=Tgrj@TyQ*&)bo93DwKmjPKXHClsHx4Cy~YD>|?8JO(vF4|m8`kHKM~*E^IW z9TSQ!%vO)XZ$b%$v<9qh2o;Nc%Fh}hjw_LhL%E4;8o=_kS65L zddu?+v=Ukp{(uMM-w4piz!8#z;qk@(be+40+WRHBfSb!n9RD~2D5}{?QVy8OmyrC zc(=nMljfhFTnewj5~jtz_UX~y*Wgy69_jH&cM8$<%j>X4h^}8=hlhnuww;0Z?w=Hj zZI|eMgO(2d?5KZ_Dutc!f~3)v&Q5q$h^};Y!Y-yA{#P26;=6>qCGBulJKS@-_VIoU(28&|o?mvk zJ^{<2_3lr=V~CGZpF#tN&hvf>F%Dhe{SP#EXsq{hNM$<2d#napnKU0=pVdI7q|uJ6 zfp(G>j<1qypo>rwe3e`SL5ZXtR}1}28Z79&3~7K+X5^*b{V+)ASj45?129%72Huf0I(Hm_Plaf`d>5!U}d9C*sXvnmK&v?H=V|Igo}j~(?p>nrc0S_gTDAK)=8Ku6hHzsU8opIshK7ptV>zz)#`GlLyBJQT52AX zxxRL*MJ5v4^03#fZZhOMoc5I0t5ypAp7tElDxtR%S9*Qw0in+ltC2P^nep_iCxvJ{ z1L_$jGe-fnMbc z3DGK#QOAU6$Hl0hOg?DRV~00J{bJI1|20;>F`50>Sp6YsRC~N~wWg*mhM`^F_BK&o zrX4`z(nK|6+6J^6o2Uqh% zrY?Jl^|jq=gP0^R`lpg?8s{bZ4j~LI?AXdt0j;m~Mj~T7s{Qx>?d_?Y2?33dQ!^ z>29l*3-!wOLp!xn=vAz*ox0tjW8U`aPNBc@JiZR<9*1_iv(#!Kx_auU)(FvTc2xHX z(QIa`2ZiYP(n&pR2Ul%H5jiow9QBIO#GIx`Zwk@5BUimG^hn-z zcdq(C=%u_pNc#-oDp>02s`fLPJ>6A(!(^_gyQw1%t#)@;MUW3M zyYtiuCfZ}kzMcwi$I=e)ZHmkA1(nYb*1j2nDvZgT1A?jnlW9x7iWQ>z3RDXr+QkJb zjmgwdpxPPY8VXexp&fC_zCsmbGRL!Cs!)iI6TMX*CR1N;b)KZrn&_j3IJDZ`R}Ga& zYD<4LT8P@xUzJKEjYNMn!J+l;{%R5vwX+BYsLKrb=o)jNDmTObQ^3=YwsI~ z=R_JaGcJSFJSNl5bJSuXYRkFmW+7_Jx#~71Q{TC2l_B5k_)<7eJs?yWUxc)Q$&AZj z^`sDu%MkSplc{fr+9GK*F6XOihgQ3Xs#heE+ES!;3Q=2%)H@PM<5HyFcWAx4NPWaa z?d;+ku4)YNxQtW>gnsN*;2Wt93B8%#59upIJZ2-+w@hY~MyjJsrq!d=aUp6M{z69^ z8c%bq8?AgyruNY)+z{73Ry7u)EB~=7QHa_yPPGzJz0XC;5~7wBtFA&HrWYXQ#cH@jQXeL$u|hPu6VwEWq|u$ACONd;JwZ)j zqW<||qAGXjLf=Gn71Iv?^7L$ViCQSMA-x>wCZT3Yc>hza6l$GRjYks!6R6QW{ zc78e11|fQlK3P30M6b~&t7@UE3rl@d)aybw6<&z6S7-y?S(vIm7TS$>7N)BGOw@;f zcbfXvr1ACVbam7au7Y;n>FNg|I<`(%KMT>Z^)hvwiApJg8TbJtS_O-JPbQYaOl2A3 zwKP+Cn9N$5sr*c4j>=V}5Y59Z6)!~dFiRydnHpxP3`4&4X{B(v$`aa`R)o}z$*hSh zRGtv6iPX59uuN*S*SKLnfey0=Om5BWs!Qpq1Eoi>LrP! zwk%QGg{Un{)LRlss>L8POFZpJ5 zScuwkv-(;hUoKeSyG0$5G$ApeRr!Op%1%Wk2IFajM6=-M2JQS zud0P;T<%p9glJq=sYy&`Tvn?ol13x3TG2N=(9xSlVzrvVL^C!Js?=OVzUFv5TcZ{T zrQz{xjk-}tO4f%4ryzF~i?GftJWjoTxLX9wOgQ^uu!?X?RYeTrsZuf0e-#WC~_oVuc z$&BaI>X;C{ws>0oE<~gIjQUfEcEBcuZ*AkxVtBb=mv58uGVK5w`Dax?h(><1s?TIb z{y7yc`QF5~Jf|WZTJ3v5MN2-Km6uek5Y5UL8P z^a1XbZK^`(JKQVV)OA9%kG89&LbQ*ztGk3+_AbSDt=0;4>0N~Mh!D;6Yw9T>n(5cn zi$XNhud8iBG}EuEx0uYTdqeFpX*gznctd^U&=%JlszxH|Qv*BI0U?^{o$8SyC9H~I)c6`78T{S@H{!Z`t-c>_| z-f5hz-czH6jx;Vux>(4CZFyf!5lY0iysu^neUAJ612s?RH{9SiHd zd^ytXLNB$+Rv)R=LVMekBdr&@4zkt9YNODtP>%E*lbOv=)Qe0Dd^hTB^@-XhbPc}$ z{fXKol#N&ZpQ!f?;pl$q`$YZZ&|vi+H8_h#egWT^{an4oWbPMyu6}2t`P<_9Tv;6{ z(i|1{DUT4Xf*R!)q7_oB>IuEJK@h_Uk>Iwsp<=zgZWOX7@?~aebrlY zp(Sb>QkoErpwjJxZpbsB)xHLbv0Q zHdbFGv>JaOGgeP#GVN@vri>i`m-)n${|HZhD1Fj*AN{Ul5|u4 zn4sAm$$FR&?T!?^nCTFH^5_K83L*NeQHpNg&6GmNkQBX5h>jsC`Xl~eptHSh{X3)C1Gfbt01)>sC6& zq~Yi$`&#KthqkyfbhhN9JA$oscOkl8*IM^xGS|DAx}OmBC{qs*q7iJP&k>^0ZL0?h z(MYt@LxpH`+v(v_Z1VQ78fX&_PcZ`VX$%EInK3TU@(Yx>D$7{QPxC zeVx$SxFV!wOs4PIdZkI@m6fgUb!e);lfGZ_RpylYJL|`UZpfL6w28^|y^DTMi2B|| zzaT_?&(T|isPDOYE0bAuUG+9eqmk&UUlXE{=&E-znUUzG-!o0^} z?VhcA=x>GI>t2rZv(P&|vsIoxA#|{3Ig*DzEV|ft5cBoa4TPXaIZ~|9cbVBLs9OkW zyv_>hbS5)``MR}9;}Oi)9UYqEFVNi_TIBDo3k~6Gr$zq0y0=4f{QY%bCNrLc^Z+3m z&p~>SM7~^blm8rjo}|&}o~zFnqR~B17crU99jr%4zBjSH!FrTL(paCb#|Y6_pRbEe zB=%t-4Aqki`RJ9#FnyU2z0w$_=Lpd&lp=kN5WPYv(l-e0$5l66FBdw3t8TcyM~Gf! zU7+t1qE}fL=*NWU710R&j1avd8lkrc(JPygdWR6bvKgs&3(>2yQTjt6dUZBR*D#qm z8m$j7(bbwCM(b}J+Tt3me`Hz;*F~-HU#Nd!s`SmoGth zYpF51A=5(NGqL+&jE)t08{bDCqZ5QCb-BwwR;LSH-eomX2SadaxBLC$bVnh&N+{Ny zn9M3D);W^)LFY&P#k!lM(V8gMJ%nf#l<1%kt%8emA(L4JrMeH(LYR;BmFj*HNvq&u zJy3{N!NvMqCUea&UJrNZDgSsq){rmQ4L{MUCkSm!xywIMPje!-xF+h$9eUn>iJmW! zl{s7elk{St8*-jUx`oN~_ENn}i28S_ULi#No2+jaqW(?McQKj%P1W~G8ue(Zt`edi zP1Wm|s7G5|)AS<_6+xMP$`HTfFkQbOMDI9E*V~v(%P!Ne2~o=~({Bh-%Vy|ZLe#RE zdbbd@rCh%wL~SY8?=zX>*)09JA+G&$eMpFEzg!=ceDuoZ3jKqVZ;R^+{kuc2`Dbe# zq!qaskBV>muhapd8**MliefUOG)KoUnO9(Qbes^idaiCNL_NAnw-BOp_&l8?L_M0P zTME%g%+qO1rbqL2dqdoot96bLwdHD^FH|32C0FSFLe211a)mx$s12r7>QO>HFs)LT z3ccMWTV10k3+?Yxj#Mr*3-c||R|ze^d<*mQbC2+_MVH|iro^e)X!`ez|}m*yt@7n50$H*1v-__G6O9&Xl_5Y68$+9O1Bd#m;f z(flpd^@M0eF4Ya0%=|6WjSca8OUreF5Vd-_ZYA_1UJI|#9fTAfg;(gVLT{#*!b)8r zgsnyz$YjRsHhr#1!!fJ&-lm638r>hfU5^u@>&QFwL?OB-eupk|@@;Y5p|5c0J^!8h zYD2i{KK0+FuNAr>=RKrbnar5ot(ObYnBA>c3elL|qwf%+F}qja&181YD!oe5Xara3 zH9|CktMq+LW&~I3#|&{>s`N8L)Rro}MQAEsYpl^bgl@)blr?%clNqJ8`W=(TD{HO( z#GzXMI=$ba!~Xm9*A5-^->-i#vfn=RIkHG z(M)EP9@4QwG)fQYI3XIPhjmjS8l^{c3nnv4kLn~zqfvTPw-lmLdQ_(~nNfO7cQC~5 zd|c-WQ9B>k1wz!$4SIkOwR3|W%49}qqaJS3c$7Bku?`i%6MBN=qj$ER)YF9MovkPJ z6-=hLPw6>A)Z3@@RYKI;r}foB)Z1tDHA2+CO?r_K^>342!esjQtX^t}-&fnL?-Zii zH|w>MkB;om>HD30TU^iS#~hmEdtN^y`RHA*7xYU)^e)s3dIyu~!;AV2A?m}6`b{C~ z!%O;YA?m{xy;q3(@UnhSi2Crd{*cM^p<34%@_m4{Z`Fr|_Qgy>Iwtw353lH-oP1kc zujoG|jm{mf>XSm$vRAb#G{-Dz**5JGqLyvfUM91acIbelQ9F0&`a;ys9Xg!JwDUC` zCu!7{*L71S^ZB0Fb&84fh2tlEU)O0u^eN!ib%xOF0(anboyBBc(Y~%b3DJ@04V_~m zah-()-q1mZwz%HX{S5j3D7YWq)&qsUVLI0k{w7aY;B7sa$;{Y0dZ-YM%R9PAh{okz zJwk}a zKGL&9U2 zhhhVt>J<*P2>eIio*Pg9>G!iO1~|% zDZdD5kI;e+rSP?WS7;@E!uxCezR>hM{9LU5Na(7(BBW1*#$dj0^?&S0%=fL{$7DwL zh~96~_{euee=TXW7zo__oMm;A?o}0`e!E7_hb6Fq*33G=|6<1@5l6C zOs4NYXm2mGi)qLGr~^!tw#D_Mj+8WN%TKzI5Vhqe9Vw%{}hgsuUu(skwcvWmUWXuTU;({r6DY{N5E~}YY6+-8EG|>>5<1;D@5(| zSoaB0kG$4{LewLl^)Qne7r*tGq*0Ij)B1Aokw0>hUJ&Lk)Z(8$k!`2wK^NZ-;^&7#94Vx+CYf2`brx8u6n#RK!|=*KHeH6 z6zn!3(8L-hRMc$>(ikSwvZhwCNyC;64m7nckw_}DxiwjcN@;G*WHM*b=GI(E+nqKO z)8-3(lr|^O!m2QY?{{1iNVFCR#YJ5gNU|0=G$N2}T`T0xy)}?xT`%O$x;@a+x>0Cc z(lvoJ>lUG}^XCN8t))!nH{LU>b4DOKa-iUZq`AQhOK@u(9Jp`kyKxv^}P_) zkZ1iUL}lh#e=wQ(%d@OLX6^1ydlS<u8|26)iL_>61WTD^}?1{C5KVtT-k!e*>&0LNtE^tY$(qe}k+R zLNtHpT8T_Ff5!tutYkwxf9G474sCIrZ*_9$WMHV3$Fu``a#B(&!+U^kE5wzZR=w#p$>qA4ncd|<1QtK0;eOX0FpD~&7oNVoL@(qN^ z*5QzRQ><@7@=dXhNIsg)sn+*SK0nfL4sCHwwRB(J57^F=foWD4lUXm*t@=W=US?Y1 zPUJwOI7y=#%B`kM=6-UymEusduyQNYp_H&$R<=W1T$fwj9Xc7f!s^Aem}m1!YmgAl z=9N|v(+))|d5(2~$p>_oc%C(qX`31p(K>9Nb)kvGPekJVI%}K|t-*O#i4d*9`PRik zv<9!XCNh~dSYcf%X|x6_tf@k@1}m)TOy;u=mDZI^rq$P2l|t0&Ypm;qXbmo~mI=`s zTwvWTL~C%NwN8lE;6m$BAzFirtfz%&4KA`?GQ_KHu~jWZt8TGH-xhr&nzSo^-b4f7 zdHYm54v&T!Qc}oI@3Cn3Bd5-$4-(mavMv0+=QDX+_zi;OpBzuRCrG*+@5G*}Kj9~M z70@^S*pY?!{-lPNu!R;Z<#wLHf)s>Cns}q9$B*J3k!mS9G(Oa(D?$w>-uOdv{j5iS{7iNvHiS*LPz6tyM}kD*$cJ2@96%Bf}{BUudSi8b`*~)8gAn?FOeahv*jAY zYbn2g$_!Q0_ZE0S(eN#==hIsl>UoGqnA&Ww;j@h%eOHu*0X*ZOqiRYxeeNQ7#_vK^ zU{XUprVR^m)7hye#&|-<$M`+m7t=5LWP*Y-x7qGRXnR6OBh+tf)8A10Y%9m?`XRXc z6n;}b=~UKg9GO$sA$iVp%>3tC%pMFqo0#KCXq(Nkk$R+HFt33j|K(`VonH;3ThdN6 zyDzlH(4#ATp4C35JjnJu?r+`kO#{7CtK>LrcGj6APn~5`0;z_}`J5QKCe4hPBO$3h zr)D$`=-v<+rmovo*_eC|7a#Ed_*oU z%{nF3ctZPP%K7Kg%=nmAnbwB3?QCuM=U#`_`_J~jxrRL3*#2|Lp{eg_8c8~mTW}tq z0nNHHwTJfC*rvwNSu>@XQ98XnCh})KZjfrA_l!} z)aEg-vn~8v64WZH-M*3xodvVH%n`s`b)T(9bEFNOseiw}Oz%uy+R^rz<@6H%{c1O* znO#$e$8$@LEyfeNe?#riooo7gww-8l{rmQW&S2;$h5GyO3Nb4)bQX-?c+6|DH~3ie zZ$`}IGLfNYvD3%aM261q>E(yE%Gjp0p}9hP^v|{_|KFSq%~9g?+Rs*RLw*%zcHil} zIDLdq@4IQa$xGiDtKcz5HGhY!y-H2wzZuWaGXHmT5qehrH#M5}|8sxM?l${kMFH)U zkMOwXg4eRB*QSKCrT%ltXPbRf+OlLS-`MnC)Twoyp8CJ5%e4QW*U!I?q1KuK`wS)!NWK)mK z$eT#h{?lXrZ`O8b?WX+Dx&HSpJeOamtWT_4b*AJj?$_B`eztpYp=~gEZN=A?cnvi| z)rWli8+0S_F$fyLmH3#4k6HK_iH||}x8$yaW@tBqe)xD1znyy|KKkL~MMyw95%VNs zo+MZVsc5I7jo)dFufIp)qaQwAgiNff4VKx4pGV?zKYY9h?J%Yt+S&M=jnADiUl+8y zpxp)2bC7e9bCGkAyCQc(?uOhAxhHZEIf!-;efh`*$OXs+$c5OyKKSU5k74+@03Rc< zjU%y*qp-c>FvmEgap=cSm#Yc*n1qkX_?U)|a(rBYkE`*q03VC-u>>DC;Nxa|EXBui ze5}RCdVECS_dqG^BYn1|18Y8OE^2-3L3~OSePLa0WBi+#6w?a753mJlFs~IVeRn-+ zJJwFD-Jw4`7u5^fOz}%m2f{;a<994dEk#%(eNNKP-^S$UZ_?k&sigQD$EXwG4LII& z8r%3cYvAj|nfN!oX2#5cy-*oGpLHQBmH7sj@CNrK4qi;W9=?J{@OyBTYTNHFRQley zV?f_5_ZyJyS4;4>%BVd>xK>srnm)dUw(-0azZ>nQvG3!zDVScj?Y9rEL%Rt3cpzmQ zw){){oP2*6)b~qN`YQpHx*Jm=_b62IyBEW_ZA-a?VfYT4#_u2?9R`bfg`rKV@OO(E zsY;;tFxIH+TBfUqxRyKBjJ|Ev6KW&=M(Y!bK6!hm>Jxnw>lzlFqn=Zj_s&zbTyHDr z6;Y^YM*6Gk@Y@dut2elW>+sv_u~pDMeYk3+=$o5c@i_STH{&AsTYQgU0(GiNM8%%6c3{nA#oq@(e}C2?tRq=VSSO*D<0r~#9IiyYQeB6NYXG$f?qpqq zTCRNf7Xe<=KK$1HU8qg*Z_hQro%sQ33jBedbbJ?|{yJqcYIjIS4MH2#UXX>_k8=&e zcddOen9C`K?r2}k{!2K13j51hXR~Js$K1&Ft?XX``Izet&UFu$znN2C%ZAjNeXlH85)n1Q6&DPYy98In5uE(Jc=Ez~3cZ9we zJr{Chv7UtX#azNAdK%hO^i0(0dNyjgo`*VHUxRv;z81BH%lU#!KFqaz%dPsJOa6(= zJkD+VQ{Ra3U@b*;S+}A3th-TDEN-(!ZM(#(LY-n!Yp1in+@e0twx};xam+%FS;GDs zIp$XOufSXl;A!iAs{w4b)?>WSMJ3mBQOV&ho+B5P*4RZO*3?BKli;GUO2PN6aok*w zpbq0)BRJP|&Q;Ey+3cxs(Y!BY&l2|B$T91=gh#owjV@X_n>q4Dj;ZFDZLF`eXAhU~ z9@`&rZkeu>H*eo zSbx;6`fYJfwm`M4o~U6~Ick)(7`2I&+Mq4&(oEKVtYaJGLo)8864rIl+PXgS0P6C{ zWYrPpF$F(3n{E}V*4AT@C5j>|Sr@2o)_ak!szU4Y$Qt%on&Q`JirLD#z@pSzi#*Cj zn(U%ntz37b-Ji9X{S~arO)-hA$?nmrT~t2XC9IXk?;(Gohf1#WQ2ZL!bsnmHE8DfK z%FCs(=ChWtPV(aST19VV`&G2tMb)ycd=$UHN9C;Z;Rr-+Wlt^Z0ro3D#aMnyO=LTt zwa`zwiv85D684mGOeNcESl6*l)UF(BCz3E8B0N{ZKT-(wHQ$23d<)D_E;o zt66JU>CeSuJZq4(q%pOsl64L1R@PeMkE7HztXo-YSyeob0Bb&L32PwXCWM z#pgE}t=31ZLG?z~qGDf~lE0Q!H6uHLHIX&Qn$KFyTEbevTFF|)TFqL^3eBk;#hSpH z$QoqLXDwzeVXb6c!@8BVmQ}T&auQkdSxZ`WvyjZ2^8;79BBO~+MoE8ULDbj z?N)4;BvNW6>l)UrthKBviR)s`XDwl^VXb9_WQtL&39N~%LDqcMV%7@QYStRogcQmf zWUXXf!@8BVmQ}UnnAFj#yaA+r3{DmGShVmM0&9@9n6-kniZx*@#RSK3 zX{=SO)y7jy{tDJA)@s%oRw&`}S%a*_tQD+PtktXu7jZ4D#jF*qRjk#lHLOs|WwHiY zYsQlYCa|A1$Xd)=!3q;O)#xQ;2U&|*D_E;ot677SD5jXT;!?7!SgToUSYa}k$r@xW zX02eYVy&J^F*U3(jpJE^ti`MqtW~VltTn7q#__B{)?!we&VJS)YcXpDYZYs?@ywve zDpr`uxmb(K$*wRui(^<5E+;$4T6_h^uvW2Fv(~V}Y)VaF4YC%qR)_HET@; zmr%(ium)MHS!;}5!!ZlE1lB5}3&~T>TD6$$s#{2FZY71K>|w1~&NgfH3XWl|T1j@o zZKOfgYF4<5{jAkS@8w*q39C7twTiXcc&g}}Ud$R?M=`~$HTRJX_md{D23d<)D_E;o zt66LAr*hx{(h9Xu-K3VO+wuDzpHrWzgZO=5zbKcE)E3^^#$O@=FW$fPK?4Zj-?R*a zNc=mOjgVrH8bbvBUB+l=f}Uo0=PwbOLo(hUNn-`Keb9)nWYhyNiID z2-uBAW9+@g7JE#LCHBN#qtQg8u|!QY_Sp6Now<8=7k2f@`~Sbs_x#`Qdrdfd=FH5Q zcIM2PGjs3djQFNV0e6-w#& zZVbLf@hNwgo5bCNm-Rks^ML!Ddx-BmJ;FB!AERb}bF=WxhS}V6ZVvZ?o5#IGE#Kga zN<6&3QppldCRxfkOUN6#f^(6q;_t@ePSbvgqs>O$~_ z4?$Heg0eOQzX>Kdum!=j96?8E1mO8LF@PJY6Su&Q-2q22+?H~oSr5cs2<{Eoq7A`I zk^KShhNu7+dt?Fn1`r?DngnNtX#sCWQ7Hwiti@q^;3q=|19svGj)|s}zr+jyG;|&g zSTB&$%xp6X@JImVZ5%;R;3n|7&}=d&7n;og6nIVun-4sk@sAFta&uW7${G>>9zII} zO?6YO0=`gUspt2sKe;d}-L}s4c`98fMc^jn6>W1blY6H z?Y4nFhru!iXSSgle$|9(H7S(vIf1(XFSjC!wD$LaIU$Du1#VqC6Nf|ZoiszC&qvj< zw96stC&X55ei2ZJwWe(Hp?3Ki^e<3aGS0Ob=l9z_A_{}nDNEfcZx9=OIph3*aT9oUh@x2QynVY+4gDGs zOb;g*%_Q)CZNi(d*jKE?%5{ix#+Tq!j^Ot^!OjJo|Hl?q}WMfV(lBgaGpCBPzNO_@|J5pLprYMcIKo_L(pYZWvwdxf~B?=?;TtanT z!s;y4U!cFwQVQeVnBn(4Dc2WF8{7@?M!5oX3ndP>Iun#J+>!N((8EG+-)FgmaS=vA z=y_o@$Flae>Pj3=)oKLJL)!WP26m(#_^L7CcSC#u1*sF@-H_IdPOt$RoiGM}Z%cf} zFnlS48V18dh;A#NB86I4wK>7NA?+Avf>SzDt{d*1fwzc^0<^{jS+$nf%1mynGo2vl zhw&?DMY z-L3{&;JZ@tY_+F*`3^YWcE-BTV~wu_=#F(Cckp2c@L2z=0(v6EW99b*tbzY{*aNiy zYrzWOVFT2K?a&yIhaKPz*a~O5^nro;!2MtyNMIW@0Ion<39Nudz=L5a@UQ}!0k(yu zz{3h?iP-jlJoh1T^RNc|0oBOC0kz1-;|#McQVs#+u^zVrJ`9k@Icx{O(Of9t z7+4TIHx~8-kJUZ`X*L4#+$LBO67DNN+)jmE!eh;j1?3Mw9&2|u;I{#J?hY3R{4YQr z>v;m;J+22R_W^mV>dC+#0`lAwSRXvr^xlBaV14jd+xr2&fc3#+4Nn7fl_&wLN>qUE z5)EKYNhV+|NjCV@2IRT-a9%9I7jkld*OlY}_X6bc?He6nJ;@+Y>I3qeTw(xhASnQ) zAt3q_=ga6%Nikqs$xy%$$w!E72gq~naq`S_-EpGHb8(Upfbo)1fW0MS0CRCdiEpdp zG#WiDnFu&oG6{JL0eP+nr_&Oy7?9^a!6`M*O^{3joG6(AI7>1Ma5la&$#Zig^8lAf z762}lECO5xdxqz}fHfoGmILzK3dwT7m9T4gZo6bP=sN&;?mK+hkjJ~Q*MYJNkjML< zHvpcHYy#yZAkSTpYzDk0`398hfEW?Uw}AI0+W;R(b^tz;>_qHyK=i+4H}IE$Jl^lR z7x-&Hj0nFUxGNx!w}}1#yb2(XH-jDoUKJ2y#2*G;4G^<{KMLFv5VL?k4!i~+#*RM; z=*6D~Y{Z`dy)huq`SU*kw&l-*5(0>On*1-o69IXy2Y(TG5+LrC@Rxw60P=VX-EY7@ z0OYxJ{wi=4AmpFF4qO9>k>YOv&jZ9r@wb5M0C{dW|0nPgKs>3#-vM3*$a5q3yTC^R zVs`NNfsY2n?BE{)9}CEHJ4{pLYPh91x?=;{#sYNA`TD?50P@@!z5(D_z7gORz6t180U=#{GvL<&dG2?~^Z3~)C<=x1pxa1TJ}XK6R!)d8WO zrE$P(0zy8e3BYRuLbphJ0IvfG`IIIDR{-){fV3y@KtP^rE$t0F2oTys`T_8EfIQCQ z`vDIJ7|2!8vuDc8EXJu00>PbEdX8!2u&p| z1YQitb3>%Xz=s0zT#0lj@KQjYE0cZ%I6^ucl#zg#7t&JTqXBtts&oY4H0db7nbI+! z&jN%_la2$v6cDm1{RH?LK&&j%iNH4k^4vD*B;eZt@hqnFGvMC=LZ?YT2fhoC=XOh{ z0pA12b9<#TfbRo@^h##|{~i$1E1d)U03dXrbRO_SfIN3hx&ZibKxjqjBH$+hdG3^S z3GmZ^cv?}q4EO~=p1UYr4*XX@p1UMn3H&l3Bw4x|_$@%_Oz9fn4*_}Zk#rsK$AFMq z=?3600U^E8O~79RLP}+ufja|2O7YzUNGTvRr|etcRRJM&vTeX?141|AI|vfa8<6Lk z$aVs63J6J)?FI~z?F9^$?FVcx`vI^6-t!N+k{w3MXh5EeksSrz6_Dp*WygWP56E-f zWG8`l2gI|XveSUcvNM1m%6-0z#w8egUomghrKJ1g-((xsPO*0LRFF z17$2A^d8>q&T}(l*Fl*H$a8aLH-OIrgf^4i0=^uO=hn#n1Y9S(1Il_p$OGPR4tW5C zj>0?4p`&CE0k_B=gZ?cb&mEFI0X!mm2Fg)DjI8Vh@Z*3OS=lS#CjoixN7);|GcpMe zO(l~8o|8H767D=8&;2FC=MTBNfLQfpm4H77#MsGPfxiUA*vYB@e+|fUZ)8=0a}HI3 zJ2~L})toaRG>n5M@XCNZSI40S@VbCJ*UX_7a34UPYwqwK@D_l0io&5T@K%64=j-4N z+z(I+FOd|sVYH+h*8nSN4?uT5nQO?^;=gH?C%O|ZLmEm&|K?W~ zz5>p1au$|1?-SzyObEq!T8Aby=-$o}ciq=IG`(D$U;T1%4Xs1Fx(GalS|+w(#p0&b z4-6S<`u)iCI~>1pxRn;i)kn|GMSJF=-{ztXbA^nV8e>{=*RTLCLa$L8H4Kf7(iY@t z^vd*H&42(dwtKe0h+jjNGJwm+|AAb7Yc5u6Y!k#$?l?RFEo3GvPaVvtU=$eK#=?~X z;6Ohe<8ldRjCZrG4sEjNl)uN|Cqwi6m12Lqf|3C3`xntaH_d5wOZ&|ZMI6M)e)MSmSK%Z?aj?$7`2s|p%Vw9>_t-+{74b@z%Av#xANaLi}7z~WiJ6o&P z6&hkum=UZh#8W9@1;#9jR6!PnGRjjZO{}3jExSTkS&j$g=&3~&jOZzmX*oiypsy&QI4V^>(7z=!NGh zwK<7OgP~AoFHLkdRG7_}C1+=9HER2D5gNVGeoT_i9xqZQwk0I$b%V3j8om8kj5h?; zsLY09u%9AAmzQ5)d|PZ^oz_m7;_%v!P0|>21$vbxr8wVCUa`J!iPh-yvJD1kvoMtk zYQlah)7oUz>FpE{smaw~;j$l@q{-6_);>{Yu@u%aDFM0N&KcD4ik?ntP2qn*x3&Qj_%>SUw+$ZUIAdPA$*;nY=W z$m&Ils%_1Zm4oe2yJQIVQFr4|;|JCZ>E z86o)ZPGc6?C`ebf#!g9sXuUl;Hy3NOGMCmDd%1Jp7L%f6Caax1rcHoJwZ1EXm8P-o{UmHIH*~ug9 zdu+3G)fCwh&AUh2D7MCE)!090XB68;(@GbaZBW7D(c6i(QmNt&%nlE|23oMdTK~R1 zajYQ<-D_JEEGM=?af10J;DWAXJ50eOXS-Ds8jYPHr_~s-dDN<5le1)I3!SC3gs@0k z0zG3b6URbLDAZa4@j44m`!8GbUZ@J~*~(e{oYIz*ZoMtwGzK*qnV+jvX-vKjwgJ{6 zNF_y)sZIe1BB5w)q%IHExjBMu;W3A7W4h`LMq8@VvM!o=C}CF(R$@|_DV8ot(hMrV zB4>`l&=6yDI7VYE7tXSd%+_M7U`~pxVc5v$rRNr#X=1x7(#_4XjWF6UVJ)qg5F4-Z zMQOyo6fJDibW3KN5003iHni4~k~Qr~xSsi$dZk*!Q9EI2kvV|q~s1XqZl0+~~Vd?J|7y@#ka=A zVzTDz42&*paj1$$k(bF$MVw8(D>BWxVuFBz_E3m+HYN(m8!i7#mKj16%Z8NEt%BWk zO101eW(yN1b1reKDoi}nz7_SQjVcpthLF>WA+d&7EkpETyx`(vNogC(_%MXkNuwW} ztF*A#ZgsB(fb6y_k=;Kiol<)HY?L&auj`B;-~u#+(!4h&Xt z@>Q^|Wk|e^{je69X0JJcIGq_GBA47b23rZ7=Z?<96=O5OLFs&3)ZP6o4tq_L0iCMX|iir za%=%%M=;b#&7ziAxmpClWR3>r>tOL#-WC>b9Ts|`oWq5sso;cRe9V3qmckMu9?-oe z#|w+J3Q{a)m{1++By#}M%u-2lM9ceN7_+xTnT$@s@jz>4HkJr6t!bf&Q09{>hZ7gS zaHYZ2XINBNKokSZ^2^8;6PN{~U?uAF_1VZREC3oVTo1Rnz^sB_h*i2GjSZB=cf`_I zZNfN}RUAvp22n^RphUIu6$xEq@f~qd*tYBRtXi}ju|^~u7psfOQ8+q%P2qeSrBos^tF=VbNMlxX(A({(u8lzH;V;%E;lGbQTfK)10 zKfP#qSVfr=37&XyKgz{x3b6mn6-Uj`9SeQ|7JqYk)Hb~!Gn0D2LaWdt* z439*w+KWk`b1i!jy)|~pbgE@9c?BEGUXld8Qk6??E72Ql9;6DHsU7x`vB_^QA`xCf zay#0Kiy92QjMFuHaa2$w4hrqZ5?57rzB1Qd)_9E(X9hV|!(=a2qDG@9&7i~5Q7J0I$it>9b z3tiM&;xIx)Es-Y2mB~eBp4XN<%&&!$1Es-|i8%%>K|#5*S(2p5RTeSKD!IrEHj^3$ zE|!dzp@3yl)GPDC^m=8ng=XQNm#@@X zMVPj6#2+n4&(6gmxFs9yO$B34lru}5(%f&fPO@_uTK)t?muo^O&U|je)=^6+Mq?CG zYc+)eGMG+xgq0WvI>Jg!2s6eAA$I0d9Tsm1MHQ)X3k*2z!3G)Y8)d_$n`}QE{3jP+ zXJAaoz%3EArU<{p37%$7C7!v`_#&t1v9t^mixAsifn3P053m#&lwXy}WeKMzTp~2Q zctgT`dL*>X?%9*jTKiE{S*x44P6E6OULe092 z*$!MR^@M;@Elryc3sF3H%;kjB#ay8=%5;sHE9nv}8d@VfE}#mHMID%cGsg~>Z|Z&_ zBy8}|^TOU+Ac`Ym=~{tKC%smiRl&)|9REUmE;UzdAj}@WIQY3(B_IK;3iO+VRC*&} zrrSYc4ojDqN6+A=MmlI!gQibjuF0oL7}?46o1!CFu}=j_pdp00!YUy49UXIsbT&n7 z4|7?1oAX;%eOqdn0e5%k=90)%WhxZv*wTHmSV2s#!wSS0YmMd}j@72ps1syx<^SRBZ(bPN$Xibc=_GM_ZF6y+&2g|Npf$m7Cw*s&S8)r)Roppo z>T(+?uEPF_E4OXp%I}tFHMd9#7i;aKwx*YNS6jtY+(BU(F6Y@Uzj4BCMd6x&X}@I> zC@X%#Vs1sS)e-Q7RNOzYPO7+VVnZs!OjT5*nN}BC&}=1BTze>%L^DN4(68K9UQA;$_{-lperKfL z+w2p+1Z@S&MQEV;CaKUwTH-2P&@qo=7;_$Qf)Bx53$qc<;Q(8_TWsxsXZLTcqHJe< z6qa4M0?e7;F@q{5eb>yXnAZN}6PEspX`|RN2KIxd13@m<&aEWYgZAjui}vUce|uz@ z#-_t3d$BYD?9s`7v`42^*&ZDRlsz&ghCQ-*X4s3gGQ1<<=~iKu6x&OeXM2;2!asd=>XamIUGw9gmYc3ssnjmT-9wgoQ5V zwoqUtVjdWkMHZ4^$y&mqezQJwUM!@Kw|a@_AL435|LC}QA}o$^|cJ^YjKS4TQALtQ{6H{4SrU09re#I zPSLT+fE})In~rg`gv1>rQ!=DJ@o)t|iYlM$sm^DszWJsdLVAOd8C4b0G#gt{QT5RmX%9Gx6w*@i7O4@d+=$)k$Q* z(Ix#@sd|etXI&wRC`1-#0?3di?%qWT38N@OBF#MQICut-D;vYFw>{@f(kb&W9q8u1 zwW<|tHY`=)#pP1io_CguR)ZH^_taOg`NE4?0XCZ0O~KCDdJb#K`5%c^4Cxq16!)vZn_H0OlzjqJp;zg4mscEYAY9ABu*QH zpJ{4|GX%zxc)EkQBtLOB8BC{av^u~978+0YGT6|W1`Bs$xePlrHrvg7$q1m77-UOf zB9W3>Yz0b|Z_Zer&Qe-msAVI7<(K(*Xd@+55)>go=7KqZ!c7`p;F^SI-GubwU0cS^ z96)-eNbsN(&MegCy|Q@BOvWi|Qn^&78CpIORa}%*;fV-Acq-B=j!cBUINzwlMXCI( zV!sN9%|g}99ITF+EATEC!@5xPSqllxj!pxcF~XH#CR*gt719V8btNNJ*rWh0?zZs0VQjbET1{ElC4b1n4V=M#5RxOloas-&CW(qume%K-v4KhZM1skGXq|!fq*PDba-ro@5HRZm0)>*n4<^|AmNwAk z55f31)2uWst7Ca3EeuLUS_PkS#c0fHQU4p5!%$QJrX^BnmjTNLJ2zlGj=66(2h1^o zxyCN`3PTq_ilI3ibRFilD3{1xV_fC`>6>q|;PADK3wxY#7zOEOVS z`#n<#l3>CrI)6-Ll54IjJEnvceJm!j?FP#fL6xZJTrowxW6Nbqff~L2 zG*;*Y^=BndlwVI zvU#&gVJX)p?OUQSVCD2UbI_EhAZG<-,^-&C?v=vTA8Wp^8~l9E%Jl#b~H2MdHC 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Text.Encodings.Web.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Text.Encodings.Web.dll new file mode 100644 index 0000000000000000000000000000000000000000..f31e26c725f8e50d1ff57211e8c6a5e942db93d6 GIT binary patch literal 57720 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Threading.Tasks.Extensions.4.3.1.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..ff691490b4a36b250a2efe4e037f671f0cbbf055 GIT binary patch literal 14712 zcmeHu2V7H2v-mkl=)DQjjDQq@aFWnLq)QQ`BPbU_2oOnuB-9HCK@n`&8x{~1D@DYP zir71HE!YrIuz(=Ng6-`IEw+2_`@iq|-S_`~@5Hm`%>Tt7hkklF{uKKy zGUr?H{|WMQgP@pv45Z~C{d$Bz52S;a!bpvP-#-_+iUO28xG@kUf)?N!c|wi=0I0Kb zAqWdas!AP%5IhZqnI&}2ce5L?hlPp~0^ zKrIDexuBi`@jyE^fQGIroEjhu1D<%G6&>K?enP1qi?%^Vf96m$Dg$UXqyz9SfF2Y4 zXrMO_i~<2_>EOu&7$!sj)*&9yrh&0zhDShg6wo38+yo$#G(lUG!y(>K8q=Y1qqGwR z{HFtHQ3T_ly!(K*R6v&vda=QbdB6yuoN%B-K`A^_hJeoz3AqAZxPrcP&{kL;{|dex zAUVMI$XFp@EY9e>P`=HH`k+6$im3cJ;7I|vv6=tR zc_e^!V1OU0!~`(bbTCewU=&n-iD2zeO^5@lhT7L%K(2pZ)&$VnNkAPhM1>2ms0MHa zGfDwv3>X;#^wGJ_7;cGbA3E0&*`W}sRsRZo8k@5hqyonD17orQ7s)^mctXj3t;?ET92_p5lN< zCm?%N`b^M@0ah3ftj4#RiR$GTuS2#B1EL9QeF$0yoH1&D{yW!9;MW~Nhk&2}5P!hn z9->o~V*wc4CV&_8a$$35F4F_> z<^&4@86gvG2naqh(mB|3x~q?qi-)JLTVy2K4g)BlG}tL9B%uI<2n&51xfZW@JlOvV zLgR4hY}Su`JXx`9 z4wJ$Il@!J=Te;G>R1Q56Z6!~;Y|aQdS2`t*#pd$pRPG3Bn0ugIs32*aKpH27PNj|3f6wla=5vR& z2Ta3<9RpgAPIIV!21_788jlv^&Y*y8_w&jB0xcwy?+FL;D7<7YWDiD7X3!kaU5UnJ zl48J!6{5i4Br-JajKE&W0uZ%ZGT@dQen(;S9Yl5*^c{jkp;hoTj3}gvLCfpVF^n7} z11yFplmasVrWQiWFM{{0f^v$W92DSH1@8w0Wt#x=9Hs$=AZQV4a>4j8Bmvc8_CgAv zJPM5mVYCvtE z)P>%F(iqZ)(b85>`hk)R#e&if$_1s1pp7?F3*G~vi=dnZ$pUIr0X_jDU~oC8X+*un zkla9A3g#g20sw29M}pB1hj+h?3{n+M0xsB z93Fn}mdfTNj2KElO$COeh7AhpXK+EBWZDqck3);4 zaXeYk?6hGl@aQT&bSj6S z(PBU#qXa{;<^(GQA%OVA!h(o^$i@|hrjiLn0%DrTp{3AisQ|D6bp&%`#N5)#(!z#F zj){%6CYi_D&|;8SQVc1UhQvnOL=%Zb8^n?t3qrbY_&i;KN9T^R3nqpN4&)&;bW;FPJ(^>&^okJCO8ac0{bU?p>d4x6%gne_*v@X7p7YC z%aOPWko{`|OkmLoi80Z_wEolHQQ3UI=l`B;eiY18uol0%I75K~*DRIJGEK8IH)GJF z%~&)Z6(|oSF%c-E*P8lYzxBC4Aj5fC|RI zFi{SX5tWF__kd|w90nGFklCV=#-cC|=38N4T!}9-9Z?m+$RQF~7%IVS#pFN;@w>h_ zdDLMLu~Tf=peP3%5ergWs}cgJ&w1Bn9ud3U|!Eli#1pkGSQ^AwDZta zyXu_>pK6N5GN0L-2O73Db$18iCz^R^yfNK_UGVy4_?8zQd&+#dvXORWdp|}jZf?w0tXbxscP9tEV#pg6%y&Hh zs9`(h*~g;N^mwau+Yb`lZfngM`3l9FZ(fsCwtanlykalyRFX?_iP*rli%E~q?y%_3 zArtm3D|o-Qd0}s%wrh3HoR(!Xx_r`QLzvr*El=eut#GVAr*sidiYgOjJ!OEf`cIM8(w5iu+l(Lx)@;>O{WL;30z zUProKsq8b;J*?R={~8)3&)GE<_{50976-B_aPgBat@bTe*0@WEzLZ z#s|=;Y~naX8Eq<}Bts%22$5uLZedO&TMTiei*l5s?7@n8<|op`->qt8rBln?c_|sQ z8VN#&oPhH|yb;fmX(ev?F7Z5GqOF-(YHBKhIpWj_R5sHrF@erb#-8sBg|}HDjJixtw#j|% z_S@m}Cs?r0>W9!wGbPqV)R&yZ-P<(9I4wL+`s>y^lC?6~E=76q?W*CSyY=@6?N90) z@L0sDb-Nk5=(9}lvttuW>z4Y4%(=PuW=aj#G>&qqR`y&<_EyW^{r|Yz8g}|XxWomX!ZG>dINL9Re z+pLXpmx#gdAQCZ)lI?Tvn*N&R$(yDf`l1nBk?CcKAfAQMb2?MZ4ofz)H{5m_|8)b| zbo|9f)(tBPSMGghy48KE(T?QZ?fn*>?bfAVT2v&ztPjzvgl$9#frlldvhQBLwZgD@ z#_JVjF9{aiT~`y{z0yhR5OrQIzU2|cu71KR8-7R4_Wp6Tz8aQAZEvJ4PprD}PPS!@ z!pAq`t5UPFKFn*+|I);jzaKt(U;57XuKTK1X3V@jujcN`Gf(?imT_6?af798&3S|i zi*9-oDit?5-|9M9Fx5@ft!U2sIRC|0a}=_7R2O&K>lkXduhWvMt1p(6-&eMKU~Au} zi1dyXx{W^1_a#1=??=u<_+lBr4MY#Q07;7MvYP@gi~UYnklccQi)jVs8{LvvC8IIZ zAHZgV02$~vJ(f-dnIXJWGRP%yK-yu<2@nx0#F~Uy*dR8j6R;G3L<9x@aVN#c{OAtA zp&Q|2fI9$tZcoo3M_!Y#?=EXMU*5<3Xz#(96Sp{POip+a?zj7}sI@xI^XS|LY3+wr z3Fj2=O7&QuUN2g8!R8jMOmuE4lu3_Ski9BOk5ReVbK{Hn-)^=P2kw_NX{c=8Wn7UV zQF&)g*rh0Skr%Nk&q)FLie?>q#Qm<(0B}e-xX)}Iq2^u=hmy%h|_s9R`` zgrhws;D9GWW|a7pc;|Z#dm-ShespsJAD1|kcNBOcuy4Vx1)Fu$*+nAcND@il?0y?@ zZot_EAbyDN2n?K^^Pf38GwO(^`xE*+BzFtSJRX<37RgbzsvRIXVfht8yM(y57DLOhR&IF1s)Am-X6yq3_1tw@kIVuMsX`pGaIe0W7a zPNE+O(GMa+pDhV^t?vw~!28Da=5Js3I4E76&~%pTWU32hEy1f$~iDH_}VsMShcW%J}k%thBJX&JhGN?ALW@$#1RU)IOCPd>d+{@Au% zBGScO@q_V%)g_asPEMHVNu3};XN9j@^E9vjR8gP1@uN?6H|i|9S(7TBRT^~Nc-SXf zx!!Q?Iv?37QoZ7Zw{o!`F{!W}R!_md;*t7rI^QUKiH4cDsbPhy41S2{$04v(?4hr@EzTTb#SO zb?cUl44pxb)f4u7oTi&Iu=)MTghSqIpS(&=Q}29fwLV?V`|Ir*-T378%E3>IUPc^c|wnfyJ78Hjjh4^~7 zopQcdoH9!?$0Ol$`j+}SCUefk0IrfuhTl~pUnLyjtAv2#ACkNJpLSfoJOK(FN=tGp z5MY3Y&x8_KqV#AG4-To|oHur4l_JW5_;UUPXlHhb+TlB?OUxcR3B*6&QYHCAdELFq2lA|edZLOL8?GOIv z=M74Fl?Q1iG@s0z_hM6m_~S!(o1&oY%o>%=SexMDdnJ68%!A#}4w%jku_{o2D^>@3 zEPgqs-0aB}*E!?`dh=HYFcwQq?e!l=vyz{3L(C>>A$xvRR*#he*2opImM}YN_Qy+t zDela@-#wN$RI=Lg`Y*^7&Kcb2YZNXkSH4NJL}s>e&W^&$@(U|fdbv+bJxu2e-g|kh zl&|;{;VV8K6)qMF6Zwia0Pf1@3Zc0P#X5jGf`PF=<|g>Czo^uR7RZD21Rr(;vb6^; z%^GO)FzI<=l34gB$%#+?ZBxR0n<6CcYm=02_}I=(y}#j*lvQ9=X5`|J$!kk7q7gM# zv_}`zlz=O-0q1@)k!V3itOzzFt8fIDgMs@?a&K(Qy^7>s`nQColMr3tPQam3b1W=% zV$wJu9>tFxE{Xbx-cU2Gpm+*{#>EE(2IAcUeQllGNG_&sWRkNf(aGI~I7|*JOfCp~ zQ!@phdzgv%;S_QSU)B!cVBAhDs_SWcu#&G-{4TrnZ|8a=f7+WvDP(*^c!L{71m-cY}u)03RR~ zO9@E3jOIlCUNj1{73?mcsA$>+5u{y+f=D!cB$5M>D4JCD8i7G1>hLQ!g64I`BGF&a z{yyKLgw9|RP8yLM83HT*-S!2ELKuo%X8+3ML4P)f?NHk`7k6j!8PyWpy@x*JH%0-w z?sM;b-ew?`5qxvz0`s~!rRB^;TW>aUrptbK9woEVezl3?{YTOt5_T^dTvYE{5tmF0 z9EjU2AzOLrW|QL9Iwln7V$*9|(0e3FW`mE|K+0lCS5d3%`a~(Oms3lE?`>{*xt3~@ z5dG!0s+pIOMF!!dS?|GEo#hYu*V!gLoT0sDL2KvA)T#uzH-qom6BQc2mcia~tdb9lzv z@%xe-7tMDVn3QlU=$%cU-8*)P8!I`jj=dM*izWfX7dDcFkjR}ZNJ3z~6W0HpB*c*6 zLqOJn2r|)@78a=Cvls%+QScu&%YS95c4^5RPgPiGi|_oTw02-{E`3!3FG&8@c1ego z|6^BXythf@*@kD7(VvT3@s013|h!dPN)K_a=lTcckNkPJ@5m&i4Q3dmYT%_;# z9JUs(aelaR?`wT6%Gc9QBC{E4^b1{i3TQKBrEY(i57zw{D@ckE4I1 z+(uD{xVZzdr?6{Wv%7D2e`Y<~aH)D{Z^mRvV$VHa(d7pV#4VnuX;!^hf7QOj%=Kt_ z|AUyiZE!taVrAOZPsdMPbdC6J+(uYrhK|pOrD_M3>dBuT!GCI+{v}87TW>=y7d_uP zJ378`%Bp3v?p)iTcIJO-^hS@!!$!~2ltlhl8NFZ721oA_)Xsr#!(VaW5R z*d)0Of=y`3)}-B{3*`#O9i@~jT;6b3cG`xVvp24m-{{WD>uI%1l4yzGtw+^h1_ zX4k!Gg<3j@V%t{QzN1Y`d;Wf>$DVhOIN6j0cIvL&%jFV#ZH{%GyL^{_fOA!=|L}ZR zJLjWD;p8Bj{j=^}kO^L&v4CqQ-oDQC<&wu_f}+vDDYGDhiSI7#^}T0!xO&(9HT%n* zw_dzH-pS{2{)fpM$`oRerei#kcMJ9Rf%OZ`G|o?~46Chp;A+3tFX>L{&9lL6^hcrf zjgOF1pRct0e3UsEG2_K1?eW%T$FI*6A#}@>_*vZRmN3w~Rg-O@Eq?T#<^86}qDQ;} zPsLI`<|;_ZS_;nI?@RyljuTsTB|%z2OjN{J7K>5Gsz9*@h4Ks^m3Qm;H*y@EJNgE0 zS)VQexv|`wZQ1{@zY_W~B?A77kqFcp|1t>CQIi`z|B)>$$fWR51p3_$MIb4N{n%j> z2ZKL;F+n7U382YT2~dE{1P0_k#n4xbLj6$v9J@czdP||+81zf@XwCvXykbfu5plE| zR;(0XI`R(Zmk38DfMaZKF64@&)7c|v2UN|NBj0A5yGXBB9+^?@ZoV{m6HZ~LaSQ&71 z1QQ0yq?P~df(lYeKRdY!r;_-v7ot9zZ~(a^nQu}GKctJY6-&H4ep4IgV6tot)9OX6 zf5*Q5&gTl7j3c{3+w`BR$B@vM7Vd5Ohq651Y&YKj`*UQ$8dddycF8tK< zc0WcdSG#6`VX=PlYib{7&*!`w@A#(ea%!4tYu35REF`a9vA5-P?XtW4*Tq{^%hH@u zH*Yyh9&993ZJoKWYp?RS9=SR68iIJ9PO-$(-81F8nP-xizVr{O`hko2b;hqG%jTBn zI@&r`^r|s?#vk2p5!uVl%{v{1-L82eC-Yfn1`tkJT=O*mY*odAX{tGILVOanG literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Xml.ReaderWriter.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/PreloadAssemblies/System.Xml.ReaderWriter.dll new file mode 100644 index 0000000000000000000000000000000000000000..022e63a21a86003cb34d9e4082ad1816c5eedbc0 GIT binary patch literal 606592 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

    Ar7)s*Rwm=cG4?*cvUjpP9AnetOn;gMJYDH zM?52e|4;Pa+-i_|?edJN{4>qa-_d__SAypt{*gSn+d!T+&$P1-moX|jLK$PDo#vci zHHslbPcCEjW8nHVLOPZl(Xk{E!4WL4XWTn;|3UNjkM5hfVSzixI`_@oqA+bR=3?5e z|Ks~+Zd??fQQyq13|!6^jWf7m0dd6+{@40uktq_%t8!liAA_lW_pEQ`WF<2+2JkPE%Hr5yI8p)?Wk7g?u+>TLSt$GB0S46`6e1sz{71pj%=EBINemaL$$>>|m{{pXbQBNEE zzDs^?bq8g88vGzK*>2yg?+bs2Tyo)$>Ey$oDfDx7enF?O=EfNa82$@^8h>;7yX=`C zVo((Rk~kHiitMHB8Zia|UTMB=sJTV56tW7Q=@2@=JQ2Lo9M2(6nop@oIP{87eYfKi z!WuK^=kT6(6{?T!1;l(;=6~j_hlzC;lz@JY#aMll`dL8HbdP1E(>=S!VywQKG`Z@1 zO3E^=a-vwD4eFTvwMdKql<|sJiTB??ykeVpsV&_8SEITx|H}ohU`bCu#y)JDc>h}W zO78IJ(X_j76l!FL&}kue%KO;U3+lnR7%nk=D8Q08eRv%^eQe}qMPY_3SfHg)_~>_f zCvH)3bWQ>ZSy!@M(VTV`X-|syVcJBY-SQFk^z-XT*W~2N2%|Gy$(|Sz3YIkwx1CH% z74!=Wca)y(l}GLAmql?f|J_Xl)F@hIJF}4;m{1=&Tj&`(IFa5J?=yGI7I)PSt*fr} zBIv4zb*t7{N3)1_=nl-ebij*}Q|--`*oqyfxFV;jD|`&Ojnd!0o_=Q?tm1o>RC4&J z#A3PPZkJulOj3=t@*1($&b$wuRXx3S6-Lp~ExS%fGmbAfr(YK}GNq&K>32oI zZmQ!RWVg97z~i-fY2KqcyE{FY+|HtIsG~zWfGZ((U8jGCVn91-TG&~*9WiUjk+X)Zoi*f?Swm)z1KFJ5W$b8Y5pnj$fA)|@ zV=E&`Q%uygj6Jzl@{Ib5*<_qu^_5vwf)Ffx1~1)3)^{0s7Ij7K=m-AMd0fqcV(%B- z;e$(sI-4k(f2_OiGG|~mOXNs?j8~sY87+>aoQ?lVq^x}xN9lM8qFQ4K7!#qnXxjy! zbsokOjeB#i=NRu={9uSIGl-mhC8sTp-Zz}Yg5xVOpx)Bl=rqQZ@eIp79~2`|fW)(e z>^p176+7@ALEDHa#&l0|spI44BA@5aK5lYao`5!QIq`*0e2KmjIVj^$XfoIeC6=)C zn+&dkPu_-hWS^&z+CmCBJ>Oshe8nrQGl?Bs+HHLm?gg;3 ziJRfk%=4BEu0J@{CnV=wWl;GXJlAH|WT~U}W5LqTC&dX(;b}_TsbE+CfIP}8m&gSJ z5|g?v(iErAKQ&fR?JG;@fW)#$VOCNcclBnhu6t!X6wk2SvfahN*rMBF-C>?g+2XWU zBMW&XL!pg>yES7%C(5{IkY;3P61rl-xyEn0EbIBgla1M;?y`rMTq_>xKCVX0X@lWE ztmPstbFMcDZ4IAs;qZm)AD-kpa13UL$KZqajzhRjvp1P~@MOHq)`NGP`@51E_rL+u zwXIv!`(QAFlBhi9xNA>`90)yRzMb?RCi~4g4U{evueD=8=(<#4@zQdtkeWKmgC;iO z?=Jj(-27bwH&s|TdN{~N=T5K@PZjnbU7ac%I+{xrR*mjG!3CRSa3jpPX9Cs*|Et9R zfcS3^{};u-UHl)V-^ecvbzN_Gyq>Fx+lBllA%7+O5k)$RSGqhI+`{0}3){oiCxe?M z?8H=X091izPH`CU9bdtCl5GBTqhsOU#GtR5Bmnyew&;(}|1tHdS29 z6YGJ|u;;?ptWjyzb)M;<(ro@eQ1qc4gLadvS>KdMbS4ZE=d%)hX~yvWF8kZ02#~3V#dnSE`{5 z)?o|Jld_0-l+KL|;*2P*(k_bs`rQ@(=CBS|xNjKGKLZG{NqtViYc%|Od@MJIA25m?1_Vj^0 zsddW{F^zT@JFizQOJ&@se&MBSyePr) zX37)K0ZBc1!5jumhgwB_+`R|-aC+h`D)j-eo{m1K3sDLmwSztewMk75;;^w2K@g8(x9Kw5^1Bj4# z@Z=1RLGdk2{JOv-55!?JP7yOMNaUiLBxcl_HKH{-4S77Cwqhm6=6KiSr$Cefu1 z`V&=}f1*%XI)-0k0yG;AC-Jtl{Bb!Fp^I0d_o1gUTA1Kb2zU=&iD5K7t49yV@0p{Q zPy7oJexVWxoN(71LShJ>@kV>-t}9g5>`NSW=?&Qg9vCOQIu;GPUMAYw|0Gk1xoQoD za7{5Wd?b8k#OZ5*jhQXbIO%btH)uj^5*dGs#A+yZ;?_pAo(5fMYh3%KOPZifnS?eg z^Qm$0X2&gM#G%ljJCUK;Cd6zL+PDnc85n@tZB&{Qzxo@<+6sB%VWOqHC%y`AOEKnl z_OKPE4d4I&TN|F&Y{MK4mZ1nVF#jY*j0Xi!w!1Upi`9r1FFgoRjS89lA7+!2MUEJ5;mA;TdbfK&wW(Dbnc52{kQ@9^CQ*9JFF7 zuY;_pp~0)Q=>6a}<0-6)3{s4@L5-(hL$Z(w7Crw*jdys@jQ97QjrY-p@qT+YyT z)1l}QDBWI{_T^RdrAOMslg@$T_+8hXkeAHI_QIRv(A3f)*T-w-!;@$ZUFjM6ZMT?s z(0@>`<(22R^x!K{*T9&z+-=s=QqF^B3C$~~T<5{yRuoea9m4sO`w7Q6UQ&Ic=yN>oYn2}KY~MRxtF(|zK2h|JhoGK!{P1LiVLe@C_+zsl z?JGK&U*H#yhRDo&`(}Qs_ezLmCh1Xd+LviK(CnG+!oZ8Nj)K=k)SHPsyk559vABZ< z81I~69!L+KkUbx>R(xAcNa8xy5s3RjiTe{EJJ0#>kX*da&~ps3A{8II6t~-j#V4bv z3K!v*^`UU-$@X0FtUTGCM^A(1g4t=_AMrUmqIqG&=MuxG0EY90;Uf|8iz4F7BI0U9 z3^9b5vG$T!^(6L2>zI4-46n_Z7`GHbv_ zr)`4v;||W$!}zK!ndBkh^kh$R(6txAg3&v|8RS^NI~kX0{%WY#miCGHN3kPKNA8w{ z*Rl(TLIsnBeIiAi5h>z`NLO*cteT7p_w)d8D1!jSG5UY?9)m~_$`z1&IO4usH zQT9aG*H@8Oue{LA{ev*d?M=#xzLG21o$qb?= zSy+6~e#xl0=PD2XIECRK{h%1_DJ@81(CQ`8Ob^MYb@6ks>C%-E|NYtZ9Ds}cbRf7S z=fE$=7tPy!yz{Sgs5CL@(os>gfYBDqBXtJVJK(fDRVSHCmol+i16LQ&WfcRAIedH} z&|S|wu2`sHLW;*jf-OX1StY#%I@EJ`mq3TS7xX!D=FSP9E3Tfy!x48mhli8WIEP0_ z&*AN(=kSQob9ndQn+|DYe$8|+-u*Ya*eKm8XG7#noZLRhv4w4|haz$QLDD@%(s064 z#dX8e#P!0{#l`0tlj2c)erTktxS7V(u?MFLq`iD@#Any`)>-ErPf}=!vOcc^ z?-^5{Hy{VRUwEUqZg{r1T7AzFe>OZ5u3sah)ptLwzC=XTSK5iS;Crdzd!EE~!t=#d ze&>om8=eE#uMtvyXsp>B5E0|&%KqN&>)g{hMbXd!WxdSEdZEbWgf9?RW!)_PZ1{Y* zevOdIx>#i;A||W0%~*kyHnJ*lo$wNImEXnU&xS9A>(>Y=zx|aT5l#G9MlUw}E|s`W zc$v6vc)7UBcSii#a2l>(Bcyx-kpf!+3;cPK5G%WH+t;PId-KoDuklw1iIZ zDY_kF)ptA1E@xXT=pd>G=whYJa7098$MhYp8)E6No(G(vkUU`P5qTh_c_?Wfh|oOz zyi*=prP0sOKdiaHcTJz9Pvkifa@CAH*GrmChy`kq2aD5iy$~B0b-7+C{%nXNrI3q| z%2igmh-fRTD-C~aM}UtLVh&X2ceD7jA$BsrkC5`KC_f^a_$`OLq2Y(|M4b=LIK!U} zF&_pWLdpm86_z;>ZG6zjNIBdgan-h8FaB)!I=Fs~kn&lge28e`L;YQ4_}nFNo$!s~ zy5XC|^};uctNeF}KO5c&*RK&${!5iV5i$PVyk9cD_qOI~?7iXqEylBry|@3sh@;r( zV_oaXF3Z{m*&TDFU{O!mOX|X6cPW|Fg+*+P>)?XpYh5#rZNp&=o#7ZS>NebhI5g;$ z`sz!gvKJ9sG!TMd-rOqe(fs*Tnl3vH$2=APybP#PuI8m=JEnKy zTjJj?_|MT_UvvHdAYJ1d9&coA;!cUc&A48(@B1q#WO%&09Q7z#i;KH_?nfQ+u5z} zt~u5SvT!w2i1!e(_`ERMfW;fZEcYH8&yIe8jRxm)sOx-V!_c;zobbgEdXf?k8(66* zp1v{gQpDq2;_XroobVmuy5ZZz^}>6^)w=Rl@n^%g!1Zf{w5}}Ex>xSgBZTr{=G%$~}Yt zSm^$v2Q^i>PXHZNIgd%2D)$$`a|g6{0>?~Z)eLKH(Ng-{W{dUmCq*qn-OeZOuajeG zTc29;fI?R(PnS!TL=}i_i8eJcah|45_ZX0VS25gMEX|S&_@_s>N!L6?1y5X0_^};WTi*mu~)VA+_X#)RKu%OQs$F%-Hd6`zWWErpZ+& zH655T4Qh5%9%(VU5l#{(6xwFXWaPsFjco| zj1LdUc+vQ99`tu1{_Ze;>)|m?&nqjU%|qV#p;23n(8( zTk(|9ZPXKwM@Okeo!7iQi&9#jF?BM})bJ)!^OK*mL(l=mzA=aq?{Td-P;)B(QiHMqG8OyDOd^Z^WKb5#n_!DuJ-;c$g z4R^xzYlM{FAP_;* z)}XJWh&wjYAsA3=WQEaNcAPhmr8>0h2y3 z+Tiw3k5cB4hM!6Gx!B;wVU4xFV0{ANA#?3aG8LO|@jQX)CsJ}eqkirY=LD@kLaRJg z!N2#xpTU{Om6*cO!{Zrpx&nvaR`w`v_2>}@Idk-ii4+k@9?wuwA<7z_y`;>U1kPu` z<@t;wln&=Jgl=M7VVuus#N*u|8gK28@vbYZTEp`rNTMF~&lC_FFcB;4L`D^}tjY0! zhUlzC34N&BF-62wJn@zWlfCyi7S3 znbi6hRhmkS2YCZaI{OL-J2R>vA^4W4f#Rm8uIx@4f)6{HH2fZwI~J* z7NmasQR;vb{-?NFFaAUP+3?@t`ZYpYFEH2Qnj;ZfFAm3LQo&j1Jh3H+&d4tc0^1;U zg!EbH%k&PpU?YMs&efM9^3{9vK7c===&SEgKU!k9`mXrh0621j7EeCA{{dXHBZ#vd z|IBpcBDdfiCNBN=QAmsbb{Wa8{U zk`~r4YJssULj#MFc7w}W2(UlXB-^Egk8VWpg3H@5FK&r*MH|Il@`<$A7RFuj4>ll% z<5b@cLk(%Z_^|q&^iyH>%#T@EYE{_lcFXt}Ml`tyRzT|MPh%T8FZY)KgEb<((L^!a zimnssB`3PHif@Wy#OC@F)@PWS&L?B1iqzcFxGGz@=~1Kn6l&knUyE((S%jNSJMg5` zc_(~ITsO2_UGwM?7jrRNJla6~O^CALU*Y;SLfSyA&<28tsNHa!+%KPI$>5^H_VCag?Vw6|DgD@;Q(B}Mo9S|ru>O$I zf4;9w4srT`c}= zxCpLaBcy!SC|@FGksT}R@&-ZC0GY*>Qp*9fUjP)00IB2*`1rn|##U35n*_V^+% zw%#J|j)oVTchV^Z*op9qi`ipiFT$)RrL8Q=jsJkhQq$1Zi?Nx;#Us>zL(|P~Rpnm` zO`jK_br5@MqCxaNkJr`qCHqoCbsF2^*pUBhNhSOn+e-C5+3-Hq@LIU2)ev+wybis= zM#$-w$DK+aF0=SBhPL5&m3*IbDQm*M`ENqJ?* zD|s=Au(sv)xe-bv>+^uBQ;CFqK2Ux{C6e|ffJ#It5wkA|R5C(ICi+sL%^dWlLl^KoKK_Q3&wgd?ZK@_wlNKgo(bS*)GLJ;%P5+o=D zF#|0@fD_fX*{r!IcD*Gls$0TZ-4f6!XQ=U=E5=&+Tou zYuIMty-W7Y*V)4oQXIxa)h_{6yo2|-FD_V@%&bQuTkNf;;yq`_uK6IX-jcG+eW#F1 zFFrjOW0+H69tuHh5=uVAbGm@D>5@Of`3?6z9#LYfo<(Q$eaIN_MMZiwq&(64B_vrPQi5X)X@cL-^_bGWuUL`3b5XukS2N{maa`HEaI zJyd+uuC7P2`l$~di{R@RMZ3ypMKwg!rT73vmacvYy2hJ#@^nb>QIgM-@-B`(fEwKu zOn?Xv90Z?25HHwzgy;1>0bq+Ae2(PvAuRe)-aUk~jS<r-}EYPmA}CCf+}99E_KDLebSxvkz-Xq>I`@EvgFlL`yU{!BwO7~4IWND{i?&CI$QQ9fram$Wd z^7Rq(>aA$5x*s3w5fgT*RaA{++=hE&0jYRE0^@uAp1)+xKiZm0+eVeP=5Mg(J{x|H z$rnP#H&e#xPg1teqi*4NaFq{qr|sYiaQvdyOg1;c$APe`7vmSa86RiuICen%Kg8po z*A`!DBBqRWCYK14h{plKqqsOG!v*a;SS#W@rki-+d>-W380Yc)b{@3;IFC!4c-$>K zULEJLxt#~CJkI0tCLTS)5o&f|(E9$1G(Uj7>A@q%_9wAwh2Ep;9& zR}?mQjP4)P=|yck;?b{^=rYGWqHY)G*5l(muRf4o&q>UDM+d}q#a2K@qcw(etj&R> zSPlZVG7a{2FO57`)58I2^_nPs+ggG2sYfR_mU8UsHiV3IPj81TGiRUzY_Y310JYeb zmzNgj(xq;@%6F6&<32>(20r$Cj8Dv)EM0iT>SGKlo)%z==uba@zFWVH!2CMB#b8Hx zXJi`TGjZ&nJJO!kOgkE!RF4O_Y17BST}}P#>sWl2%43jbOI-T-=NIOT_W6bW(Nw9g zo~_d$FuG8AYwHurM9wB1j0nni2PpERivsK-qe_xKJzzbVL&4k9Mwpi1O)wE?i;Naa zoptyg*fZk62bvtYpd5!r4M$!Y?K| zjX}}f7!=)Yl79=cio9`8{*b0TLc>o_QBb|;_sK3Sf2nu87kB5^rNirIcSiwx>&V84 z4YG#VAj_fL8t>sXZqmoC+XEPm1UF~_aj@jbxTwFYG*=5WKaQs>B+&r(PWoj#ADP4x zIn(}LihS~46W?1|WrZ)kc$vP3m1ezGns_QYKyx)syR?6l<^rV2V$d}EUCmFc1P^My zLZmJAlsC#g4~bM-@^vOSr48%Reyx)g-1s_`F7@Cos_F)Wm-#A{3>WuU1Lc%mC2N1_ zBUFXdIqpKV$uhexo|$BSm)06me-%>GE>4HctS3$7H=A8(JBH&KQKQmsA8breId7s? zA24ZL-6@UP^)kDSnDh^Bq`wHkLFF=T1Cb^IcP=^n7R7q2 zw4FC28~IV4zQaP;$PJI8U7#mFikc?PnvPF`mxJ*PR$Fn|n;*On6zCEp2A&5@1n&jH zL>y1riCl0W5RWGk@`UbV(RKC~=K|ar+4o#40WqX4LoaI`UT@3U_R(}oUD@=+FoKjT zK7yG#DuWno=D&o$mH1=no@d}0xbHLm>x@e}&eHhz8G|F;#Aoq?YRFlYRz|Ia@~8}6 zv#D<8%v0*la;)Cr<*Kzn$fFR5^*qFqxhX!wGZ5b@DP0^veEy}h5fIz6Dql+}on#@z864iA89?#&4uj+;LwV7AlzE;#C`?BS{@!Mcu^>@_eD($>plbzEWvWMkPZO0F0 zz_&Yrxv{AP-2sLgW@W^l8Nyqocr{AKOSva)47Bpq4?!oz6SkrUaWBr>g~EnS7jDR1 z_@o0Ijuf=vaFU?~7xiCkTbl+b`SE3Hgp~udjMJvfQ>L89ey3uhoH4XvWrb|wX#eGL z|FOOOo4sw)iod6Qxeg{|nF+~juS}?12zEV)D4qcOVp=+~2tF+;Y{q?txM&IEBLr>@ zPUcu_PFHLcCLf`?!DkUJt5+a8W%opEcl28=$cet;**f0Arj1iY`{`qSMw+|e)5y); ze%`5~-D|)`7HE~?+Y^0cBXOppJcZuIjqm8+6YD*`NLX_ zbvFKvHh=WT|024GrnEtuhN4*zLQl;WDP1ZjD!ntmprClC_t$VyousXzpJU%wgADiV zR&R%^He4|SO-zQRlCL-g=P(mx)GJPdi+W!FR0y<2Y*WpH-zI$$EHLcl=)xG~Vl&Jj zO?Lto3Av>E$Q2X$@mv5d+R?-ZvwTKV`srnGbv(=X=wu7C4!q4evogmrS#={~D4#AF z@MD~UHLEXEG`x#53_Ts^lVWgbm(_=KB>b{t(X-%fCaek!VRnQQmtP|r%#)1o1P9Nr z{TevD--R9_&6bv;Q&(_uaQ>&3ocCL!X;kfBk9td#0aOd z7cTQhEcntabKOIEC*tyK&xEXB23R#uhlhwi8y*bTuMyI<*CH`!93|zb&gJ0!?3QQdk5kRAS+M%A$ z_ZU9UmAFoLqPT8&lDI10bHtwwPk`&!2r1uVlrIq~-}-3k9i3wieonPU<#wM*3k@>Y zps{t34$)M@pAAok>(>Y=?`J7*A_6BSGj;f0!v~`=@{zowJrO=v7~mM3a2X=lczx7fIXzW|a;v5q~zU!u4x}l+SU>hlr*(L&@g@hR@{^ zSLL}({MitzVBkYY`5do&h-i{$E%Wo_f2X5^DU?y|OVC^K^BdA7BU0~oY@vNdQ288$cA(7~k`Zt(xH_XCM7DZwEOA2&$YH)COfLs&n<;ARZX&KQm05Qe8@CI0_o?oHq%DXRSOoXo1M zqYtLKyQ+E)rg{dZNxF`n?&7GKo{Jj>L5_j#<_0;(qo5m5sYygUK|ygmaO6;Q(Z%~# z1QuC5R^1f=5fx_M6)#+M{C&UgMP_AHSIvOS{{K6lsg5HfUc88S@#4jc7ZJAC zge`ISh6}i2W7pcVUhvHsKEP~EsUpkqB?*$kluf{F3X%dviNiO%ClbSrFSA>MZ%%H@ zcpDr^gS0TaleF7+kyg?mZQhjmuR&UrDRKCQ#f{+etH?Kr!?#7|+t|L%DoY%`E#@~= z`N-hg{3=TlBwb>_oEs!X@e;Smp1mTB(@qp#l?AV%Hl0lr$z&ckZR|;W}Uv2!ss} z55iOEM%ja_l5&O~^epgi4B^Mii*bVD>i}6w$?Uh#DJEkgrz~`wp`6Xb7+T}Gm$RS% zyer^kUW-{(lrbN6EO;Ty26pkeM#t=@u)gmL@qrLDh;*dgrEF#H!HVY&jVLYmz!YKB zh3(U{pgH>(uPPBSQDqoZm^_;+SpLI3&Kwmmdm`b(A&tYRgfxm5l1avhB=x`{p}-+c zz+r#GVb|KZEk3D_E-4n#Y-Tuu-Qu}NsR-ctnDZA{)@Rtx^^@2`d_ytE6S~>Kcy7>j z%a`luD&a*ymhE_7LbA$o?+jLJE2DPi_T~DVvZAVXe;_?BRA1`lrGbfZJl~ri#4S+7 zv=qT~N)BO{9K5!h@l zM()(e2rh`U(Sb-A!KvS^L&E@Kjp9}wbn7w1^4{$b*NlsIN-i4&zA(K`;-%V5GLeL( zekMM*9}Pcnm`puDE9wbJZw!`Ly#&RvLmKm2ie8~mG-fz#Qod;vq^lwIz;VPCN=Hse_dXOZ5!Y;#eSKcwC zIO=FM=T(Td8~Xs_H1KyUY<`eOfG2ChA(POlzY-~R4U_9B?gRUaQDjPNZ?O4Qt=}KU zNpr|uP6~VSfgzzuM;4nM;p>i3Sit_x0@!_8z*3MFX>GT~-N)j*n(o_FuSi`k>{d>!4#eD!1+8ip)NIFmOFMQh_AA^IaQHU5 z((`WHZ%NR8*N~)IsyxAAAh(b%uVsa3nXOHxZIPQmjAd(xemVqrPXve-tVytKY3hSL8wL7C0G086 zX4moqUPgT;vW2{CQB_7CncpIx%uN}gNkIzp`6tRBp}8P$!JKMA%mHs92S~ez^`P)L zeoOGXCGvYW{8&ti8k(x;2h2|{bT@5^xn6j_ceqeoYllT@Icoe(PF7uQqKx*$biC>? zt4qyCaxGXNEHb4$AEktyOH~b2??KU?e&lD)I`z+E{uu?D>?ea}?KGa*^^Ojhm(f3Z z&ufjy!IsFjAQZ|!!wjnn#xTz-_dI{sHQOgrvwU??q$=UmBx)w}q1h%AhI_ZOSW1Lb{ZDgR*!Y*D|jV@%4x@R>TAS_77wzT^)USWeH*_Y z;`dwg!@^oF95>3@(Xlo(n)KVDXU}V?|54HUjkwfv#jOI^*xOM*5?J5*sDcgLG$o8z`9dl zT}fN42&@bKCRkq(Sf6Txb>ZIx>n?%y<2G2voaR}!*NDIpo3Kb7jakjJgmt&T5*x4x zEMs2tEMZLxEYToFU_p)ZtoqTh#zXoN8?h!Vn8iSU)D>DlUwiGP^c9G1Z$}=L0TR}A z7~b~~&-OWB89s0>2!09p`8xvf{6U5hw?@taR%`YMu+ixtRT{rx{C_gEGBHYW8bhJf_|YJ^vwYL z?~43t??C`a?CEVnQ#PgaCLXy}4q7;2x(^*Su3Hz{9ptFJ19oJ~O8eGcC`33&9|N_TI}mYi;w=_pv89vw3u$AMSl3- zqD9hSlpX_GT-JdW6_5WLv=}hScd^kZJH@Rpqbd-4=kv%*@S)Q+X8F1Y5%Bc*GGU1!Il8F z(8rShxN`~M3gjr0IrY1#%fp!}`DRlwpz-%~iNBZeTtl9S83$}W(20;s;l|fW3R|yJ zReUp$>Yqaf)6`VH1R^FiHCRlsutc4OCFQgUnX@;DO_ca8oyajEfJP5W*Zmup0xgqI^QSlD;*M3+;yER_xbKabkeHFDD#vv z^?=uX0xjiJwSfktgWL5{nEG&4K0l+`8O|khuHKQKlnff{ZpW-B-(AuD-Db4%c(6^N zZik|a4H0QX?EsiOK>=7?7p8-bLKKTyYig=ALXMiK5?j=d(d_n8Wsa(70G-9fM(Cf= z4$!Z>tf}^(?oJIJ&xFvRm^DNfB6P3`WwCwoGvlj*&*)i6r%v#F`)#e^#BFFv%_>XP zsMcn~R`lZ7?JfO?!;>fn>spaQ6qd7H6`-Quxd#2Xk^QJk>53UJv$STe--T9bHG;_P zT;QIi=9U~%=;=xVwh)zx;`(->0Q+{k6bfW{70&h8T;Qt5*h}bJ+xG*n5o|PD*Ij_s zDrku*_N?M@LyiYGC*MSh%B}iY5m%;1qd8w7TI;)8_KBO=tn%R_y@V zG$!_k=XS!qkb0KLKRX=qW19-+pmo?xG}AgW2gZ8x$P*C#+GFoC`tpb}NQO*Q4dino zf$T=6Pb>eHFm*$xf_CQVhHOMa(2*C{=;yEB{Putw{S}9~$!cbuvFH?p4Fi$7(4Mxn zH?lSNc*(}oFykB&<4`QPsZ0u)6VvnT0snD7>#k+N{#`tW{mw@i1m5W@VhnyQ3_A5B z=AGC~yd@ED8({Tudwp|S^`4KtXv`m^w)(>$GhHXCP05$g@3bj_Y>&Nd-P6X3MfU99 z2G?ycq7F(tTK2TL*A96?;9&kI98^E;Zx?^o2WbNiLkj13g~Nz>HUwWWaNaF> z)ehrU@n`*8;JOWl6wV0>hY|DaM80a^yifA#-v4{WpY?Bp>oyotIIv=)EdnE2_WqAT zz5dz2`GDkg{C^NP=HDT%;`e^>XZ_pZx($XD?q-F{h!*@%f9q=o?nflA<9}4#nEx?x z(lwKP>*N{~@?;gCT`~lEP<%_c#&;{Yv=QmzDnbwB&XC&xngV9mU0+j^Zl( zPl-S4e-f_SU`XLZ!eYBHVjlc&82EQfUdO*j+?fB5;>P`Z#Z~xV%R)~WA%M@2!pHKE z@EI`={=XRb_e);K$5tm`;EqRe{K@g?%_%>RP?OT)@w6mzZnLk{GK5Ul73 z|2YWgLdKK+|Aw@U+l3WA zL}MI^$DXq59{{gx`ZI3qYnTWo`O)$BhvUG`uCX6H&{5A}c24^Yp!ewH>M!Q#!Lel~ z<@3JHScoD5CMRIVwzQ^Et4x`R#=h+63opr-2Z6^eCvo!c74TePH;8Slp5mfL{EqlV z9{W#-3*SPUkoSKgv}MS}CVFP?VNiH~E{L|-u`TaE5Gp3P-TIf-p6d-d7eAEy%Bz$21QDv{DRm=o^QaX^i)N=f2|pT!-`NC;1s`c3i4#n-j|T~g4FzA=N02DK z$ZiM*(Zo-NiH|jjS7_o5N$Jzlax|ig#^R$sD|@yjy$iVDS?;}!Qo*~>;#VY<2(aq9 zTKZnA$F{G%6z2iZ=P_$5Q00DWH-Z7-UH zi}p6;O|@g}zFfPwmEWQ(D!P&+k>?`Fse^c-l3A z-DU?S95c8<^Aa>OC=$a7&+~#J!;9Ghiu@^>ls{4=?`8XxxTMJMhz}IWH+(np{pO=< zSO6J{OesY|A%F-&ktwCfe{WC3X(LLJ0wqF`pOo)SihOSqD6|};$W(P*DN=BgC{Jo7%EMDilpY$-9Un48DV>s1!ra@uC6!V}lrprLGPJ1`Wz#2mgWg@s zYw0_7@W0jgLa@phj`acHjs^kW+CA+Au*a9Q0`B$pB%^!+cRWu1AmLVyHKS}oDl`(l zoYiL#cN4=PqR*z1^PcHz8+AfWZ)zdNYdaEnOA=WNorikyUmHJeWx#Fh`I+-$Qy$p! zuQ9%YwtNA~L%HAwSmDE{Df0ec$7kJ?EtGVq>fo2*su8Y^T@7HkE7!n58jPW_ADd=? z85hTSVKm?)kx}24(-HowxW=s-a2)}z{ZNJAgadSV?u703IJi0{XY_W$10={w;&uCl zc04h&(23_(Js|vVF<^+jiGvfoZI9L|ns;bJwKF!S10%adlcFZk`L)Rm1BQ3Tl?S52 zE6e?(`TSfD_|wX(7!lO#Fz`Z5Ua;vAVPXwFVN>{EI(Z-4L3Ex^N0*(a==am`jpUuEu+{2E?yrXfP!fx;z9w&PV8eKF&qqaNycxZoi zndFR^sa?(p$3L3Rvg;sk+x`an8~mG_`+HzS<&A{4`y2U54zu_d(Hm0(J||aPkoS*e zOx}NOv&_8=U( z-ZueLll9mMA7?k&6(`Y|yBZDQuco)bzp$>B=A+;BVJvIn<9;sm<;A;-s8Z}R$6FOk=j2KUn03n zdqo2E9Gje)-VnO??*OnPHR{$OqNaB)h5<0Ykw@sh^A_ujui{+`3MlB`pCF$9aQVA* zFz)|KXcs3+$Mq+)PmeGj)2TIE?+BBRCZBffGMKu8W29Sq*5qF3+WoF}Zhx{{?=D1@ zwKg$76Z+%+KFAHgT-(B2Bku z&NrJA_aKIW;kLoDbzTE+HR0v^(0CuD8~Eo=yhcPhYS9IFU5s!UOfqSSUgBf=3W0IzQRu?UH^^x z$(`%JQ$Oc|{LTgSziN>4Kz#vfhAf;1>W=z3m)7IzCtt4rNz;=r*Z)F)-W+nk<|X-k z1Ka()giV>hR^cA-HyZECci6qf!T=0&n*mrj#m1hr8|3PRg_C;+zUq+e*_=A<206WO z{UQzsI5M3QX#K;{5>6%@94}zU1trx#5J^$L!vr{!Hx4y8NC3B?NZyw)FZR;}moyBN z0gn?m-9zZ2&!`igfGcan!kYS(;0oC)tU|p*fEiyRb-Y9A!^;`6$H+O_-LA+=e#d&H z$sa5AYXPzPKY{U@Tl8qy$xVk}1N3O`$c|o{nw`fo+;dwyW7G0^Df1 z#vGS$v?kN}>B&zFjoqU++DPSEZ?uu@TC#)0t@t1R%<4Z`vArLFig;P?4!AbRj3~@N zRuJJWKvD!4m=$aLI@Wvs#`ZZa02pnbL&C^N`&4#~ODo=?Idg0Ky(P4p*#vy~uWM_z zHiHwbebBphgH1B6!W=HKlRgm(n%2y@PMI~A+3#}YtfF;6at zha%Ae2Mm9=Vv95Q9gcV`7;pg8vM$7L4!89PoSoB%D>)T z0I2JOoaXx)RS2G^<%FEI_DM$1?>+73T>T%wI}LX8^HO(aM)-UPwHf(3h5~v05Q?T; z{3sfRff%A|2TF=Ky(RIw^ez`~g5Dgw=R2jWp5$Fz!DX8b3eny#*(K!3j`bKi7cxEQ zi~W$VK=YvkXGvGoiiZZ|Q&^}sVv&MI@Jr*zWds+)Mcge(G>bW$PNUmzdqj|v5wVL5 z1@2%&4^mlMJW^w20xC~wkMzPA_r;{0#-;cxTf8_RAf1(5^(59S{0Qj!`Hh%nM~k0} zBp!wBN`tH2vdk+p@Ht{mBJ1{l2C8TS)L&+=%+#HTh~TEfR2v7k4G3qz424e63oNsaTfb^Aip+XC1 zVl3-9yO0qo4d;TGMb$F@J*)j!s^D8UU&C6#rsD-HwQ&LdR!@-4py#6!Xa^;nW|It6 zdm>hYk+$?ci_YOqpbvx=eYST5fGEE{o~;Hozb9~kJNeiDT0PEx4(joA$9kO5sUDw} z-gvJ1W2oBNAID0&9oM-(2D|k~9vop-uEE20CH8c@Bj@*pz%+gFzg7q7i|4!!VLvqM z;95Q4RX9M3@yowZx5#HryQbEd;RAne*uy$8v497XqEA(u{F1%ros+RjKN|7VIcwMb{ z6b|*;1F?blfa@&)HT3}xp3uc3LfG9?XE0%Aai|;clo+wiB)n6Q+RXr2oNi6vnLjr^ z?xac|vr}ahS_~QmxZ~wl!JQ{!b+cfY*k@qLgk(znqNDMt(k!jePZ}DEW~J`UXO2i_)J3bj0r6pg^$!D+(ZB=) z2WTGbMl&>OHz3_%!U}U7!f3Y3zGOD01kqRqfd=)NsH^ugwi9_c%?)7mk-=M-Fr!(* zjJN_P=Iu!zzHx0x_ur7lDWjD*qo*Mn(zS=Yex!rqSAw`8Tf@k}`@yy#-{T$gE%OGD z&txlNIm40NV}r_7&I{+|Hi6INljOLn=}r&=bdb!v!|6?4fpUZM8t0#HIm<8@O!o|7 z7qUCW$Rsx8S(tak21n0d9B3t>H5EZUn zk3y=lVI^Y7Cr;|e5-apKNIqanq<0wX4ta}^Wz^1#Xb%xUGP^=#d7+WRfjj@%-Wmee z!LTLgZDz>v`mpzacZtx9yDm59hXncv$xmbm(w4}0a`Bz^KV-0#0F7&A>ttZA5x3$# zMK5F^-8S=Whb87S$#=41r=thAJb2$C67ymoV(j^?X@!|;`tZ&t$$h1{0V)>P3=MYO z-1{-$J*nb77)ts@hN1Dkj%2HS)|P&jvI1_g==kxO0sDura7^0y>(0WESec967Wcl* zirvQoc8}2qLm*s-?2A77A$f%N7+^S;aa_T$9X693d2am^NbS}?iNCTH;#_exSaLt8 zVkjs}+vQy$)XPn~MJsx1`1Sm-)ihu8i?mM;1_9i-(T`13PqyP8j{4(v@3{9d0{a)% z_+ajrQ5wfmh0-wkR#XSM2`o!=U9mF;vt2CYSl8#FuKZ`d4d57 z0NWC2KuS?k#5s(`#RWN80q`XUy;eLnl#7efnY16bQjm9^V7p3n;{N{O5OpH+1(p$r zhXUDf4D6U37$$^*eRUXUFrM3_C#dclt4me)a_gj&9HCwUyL)l(AxxKP(}>K2Q|j8H z3cwvVD7j)-94Ss_XuQ&(sX1L;e-RXMmWoBJUk+$<^7EWv|dA7nP}yvOl*2{B-i5cf(dCwBA;e*>s}7^LO*snZSOxo z7_!6R{TM!ziW@lfC&6`l64zgZi%_sQZZ=BlhD7RyYA%(Z?n@=d`%@9flaHp7Rl_xt zQrkci!kYValAZuki36l2d{E=^{(eZL^YJLo(mF#i?+KDEY4HxBM9`vSkNazwRQ$Ln zE%f8Aw9qg8Q$EOa|K8E=&uh++1t5ZEC&4OQ0FH3pY({IOaCV>VqT$_FfV??wy#;v7 zTsIHbA;DGOIW`2?LNoE8%}GG!iDW&TBcNQLLXjdPRdsVWYbdr`G)2%-d8Q2fe#CLt z;I2SKWjBZqefUAoa&(~5f&Xw!Mx1ZhCyPB8;SXn0tZ;)0-zz}yYX&M`QW4D&af z6^u0!?c#B0y!MQIA8t*)=!Ua;+>tu?(5k!(6QcF*h_%+TDyuZIvS0BmcjOEIg_uL# zk-zSQn|9@;?MkwExVI3aW=#4m_$x7qk+;6zvT&5dTY`Gc{+V`XoWP1hi4hB%{%4NR zK(*?6my!1LUJ%>bhPpyu2)S>$;_GDqKGM>2+rVc115hi&o1Dl;*%9S6l6 z<%W>*9`5XL7#J$*D11w&OLtof(PZUtZ?Yu0-G^q?@hV}WIfLAfs zWqV>Q!7$VNX*lY0I{qAG1R@rX%G)PT0WK`Ef_^4z4n!lV*qAemv+EZx@h~x_%LuWC zCbZOOuW%Z!>mG`QJ@eF*IkOd65+2xrOpW>F@s=lz63LipO7W0v(F zO`2dTIqIYMkdd#R#CS1KBdtIruD>WhQ@t?PTZDOKQx~3;ji}E^@m$PMZXFwRKhW!$j!GMGjN-3(N+(tzKM05D#mM82L)WyJUkHP(FNsyLcV z%ziTQ+{C^nmY78nL}GJzdY$SKjmpWYN&T6)&=fTCN*`J~)0r)LmRzQLcV_1I=j8@q zdw){tGIA9fYSrdUG7y_`A|DpbFp>GmWG4+6FZ(|SjZL!;Gs%ctsWMzkHB2DrP!lA% zt)@w~2~%QQ^Y&&qQY4YDUTM>OMcS%8q#YJmAMq{B$)<)#eAXHu0dMq6THDTLv`vG!?GA`@}M#LgS}k$8}QJxf-saa);o zO1;IZ3ewxa0W3j4Fg6+6q>16VtR98Om#BL ztRv2|`Z$LW-&X?P9|PYUti6lJ8w|SRm6$g2YkNC`1>^>t0q8XaH#a$*PNZO9>};C6 zV}~=k0~;8*Kptm%d5{5I?_Ys=%-!rHHdC%s{9@KAXIPHTakd4HEC0-@ucwLw;ocMn zx^z(aDMi`wUc<$__dfj9tsm%$WgR%A#$cj4P%EFsx}BQyj{uK1JCDZTD;NlD_CTFO zKUT72Eh*{)O&6g#;dDzUzi+-ox{_a(%)SHyf`_HByLzX~ z{9=3BlfL3L7t0cEyTVOwFtM$E&Oo2vg5e>>MR zKfSH6ej}MrqMWsHL$+5!+G5;W4M&U^HJ`z2n0OTfjYb{fnChN#T7;5;Zs;wO4o;Rm z2lqj?gKIPe%{^d-3p#^2ZBm2?El(v*Y?o_`vsJJGsR4H46qI%_`-d*`Vs9P#o-5!4 z3Yxt-h_Sr_;s@hHQ0I5-wrzvpeTDNX=i=|&6jzb(T)q+3(E+uzHE1SSofDgx+1G~z zau1tt&FApfS@RWUmv4Dd&*8StPd!tJHwF+(b?zrSIO$(Lk8g_3@=E|O-%~uVbB)>% zydwlR0&ua!aCO)zX9XTV1@MM@u)OWm^GaYxatQwJQ(3p0qD*4Q z97v4gA@`%u*{`zX4J|GMKGG^Gnrv)>Oi&a9GqZo@^I_z0rTsCe z1AN=ttu>QuIOTh4FjMO`N?Hn;I}bc!5X+}k=%`GuET?NQ!+#c;d+bb)_n%-9y-qoW z=Is%dGu%`AQulGyg2U{=e2-Hqn!=XM3&~SYi?n9<7Frw0nA41V*}@?;Pdj(d&v*|2 z(P!71i+bElpedW*OEP|1>5T*;BdPX_KmPTvVgHaVVpCn_yfq*A3oUbC$)ZfW%Lq3$ z=Ms&JWo~z^c_(1n-cXRUb`8P~WUQ$6R)=Skhhu6d4_9!?x~V6QS=YkM3p19;FOg<8 z5}S}3G=&mkX7PqQLE&8SAqm$zh2@no{2iadu9^kUhK(-`DJf_Z z+v~#sExkEE#*C&+g*Uum3*fQ1a`nIzKGTE4Pt=kphqXy06`wb5I zwTP_YA}+~&>c&@+^2A6Nwz;RxD`@EkT#AUKOJ^ToW}&>5rktfgIT?Ud7_jTsqY5lh zvq*V&v2u}C^B~};P*!^nKLrRtPB(CiMPbqkd# z3vF*Q>}u@LTEO6!_&WPEldNa8_m^1gHtii2ze0-NfQ|WWBW);&Z?zNFSBsbgvH=lf;2j3F=|CDo#lPV3Gh=D?o)_;sDcj$Nm8Y zKC#4DgqNhk&XfTKOJ5x>Qf%=YN-0`F9uYA*o?h%L_Oh|R{bzz@`#>BE5I}~|cFvRu z(?U(<!u%0?i8L!S`)cKZfOhZ-UqBU_&d`|ykf=9l;Tv!vMqw>-5XlY$ zI;7@&B_A*#VyCkLSB0<_kZnGk7B-v8Gq8#j0EpnKMOOqx3@WPe-0eLH86WxT8vTxI zz9B=z>O3qUuQ0i}31H2vP-o)cG?ddW#0_deHjc0MAK=*~3F4IH^1HpNVDJGq*G)KXVaf=v-6A`e_f09JGrn)MbtzbLp z7$hj=KvQ|(R#=nsK8}>K&stn2$-m(CihC>mMmlyfYY*7o2>3ui*)kZ_7Dw(F1AK6M z!Y}Wy*kgN{?HCv&kthO!5(25;kFsTfS^EG9y~&FP%T;sL7T->;56VW&A9d7AgXk{ z8Lrd4#rCb##wsRkQ9C5I>KzYUsuj|@&|G7~fiA3+CG&H?q2OVAittdAz|bn6h^ zaD~_En@C;~tBY>&j{G-bCqb)BEyr209FHic^V1m@cRlc{T+^0uy)U9D?{t`7C+g_= z^kAZx#c~USEsa$XWM3pX1`Rlh$Yl^=%1`X*&EPFI1fjG_KbDDe=7d#0-m|d1|7PRm zdvA(1L%sI%H+l!dw@qSm!Dy#M+F0 zpb=C;!|N+siYJ(eZ7LYinM^%I^6<)x-G1s~kG>1ic#?i@eP_aH z$lQ2aGVg3lMu?$P&8auRtbS6zdiYFklulhV?lj-W94bd+Aij?W% zs#bnnX#-%&RO`Ch4Om1nm-aYjhLwXc?eD8;s~gPGD+l8`O*?qeCgZO8BHA_+?>;?T z0kHT!UOl4~nW^RY5U_Y-9vaG~yJq;cQDkLXMELx=U?9oJ`4X573S9$(DHRhq4dhV2 zF4I7enLQ{2>tKu+?MZDN^~)e0Ok@X>sCi3ErJ`cWPckVKeR^iMV#=9p@8aiNz>7A# zwy%mj@3IGy^JSId%GSoDNYf#i4K0^9imG5jk-;sR6tHk!5eTP) zt2hzT>`^7&PcuE4baf&b^foIJ?cy0V=x!^qxB~5!PI`aE*wm7YajLe42#Lwa1hXP3 z)0N%097xMq(bdOuU77U$Om24={F*$HLhgL}3qOxWK67_M0W4GiJDDOzzm&a|^T^6g zshQ1YP7F+Tq=yWyf?w^Me?lf%gVgS)w}X7saoV;UhXDzdBOnL;2?&rsIo3fK-~1O9 zdpJRtjm4$iI29QixYse}^8hGBAxdjT)bxs=K8*(q!h;P*WF3SqC{DC3UWThn63u4L zP4w|a?+^}03K&1dBO@F^3b1~kNenno|6pGf~CAh0Jm9E_=A+uHjsNUkm3Db*= zOm3He9{fEa(O`uF`Aq`)rDl6LqHH9r;4EQ_$Dm>mfd!$xhg8KA`u2i&kPC+szlHvw;)cuVW4)MBuwVABu* zhD6w@aD}5;eL1er`g{QMEH>&gPRqK?@Eh9jIq~jJ;Erk?;;!Mp0m4ZA6(;dk~G<(qFlWy%lEn`L($nY0!gV zgr(YKumRB~b7dI(O#SCiXSYHB8zN>@*2tG_SXmt%*}Q=rxY}VrQ*k!OW_3xR@+R$8 z*4n)3*K84uNA`=1IywTnWuVpG7fJxAiAZQ*wIl%1!N~@lhE)v+eVl7;#6WopV>So9 z8#ZvL&QWt2Ic8USsn%p5J_v3++i0&r3%W;_x$+a)lAxF(oyKuH?cRV0vw?Eei`}ahV_6Epm~n490ht8ak9b@K|LO zvSM^1&!bO%*5FSw6pe8fiRlKLpUW<)pjkt$IshHp+RGqGsT*~S-CF|rhB{Z2`-*X^ zh_&f&I6pTf;DA6mRB^XzwlBU3!b1-<0`ap3<(gHU3|w5Xij`skvsw8GEX79mFX3-W zuK`#Iswm>O7f6x68vIN%h0B$!S{5+~t(|%irXP4tpZYXz!+`OR@ zH#4l<1TzP@cJTldVj5vSkIr*IX$wi=aW_#&-yA`*_EU1<#6SXTw8iMam4nd2&m?mb zdvwAg<0fV@iJ9r%3?7h>RX6$@5!+-jj`J=$vfc)mndF-5>BL63%YgQ;y#m2#o!8+N zBMZ0k!9Y&7@=}>pxRrTK!bA$Yn+fj-@=9)hK)-RiA*$N#fEHAY z;HKUq*<}@~a{({TjFdNZ6%w!$K#4jXEMy3Tnr1_t9DzsNX9h`9hoN_1ldo7xHH@E0 zGCjD*_EA6$Hb$5rQetaTnPdWtnSI^O%qlv~@{2lW1BD)9zC>U%GpC#byL~#nvNSpy z!PJXpo29+yPcN-KbONRqJUFv*uy=E&cQbi5Cyer72g(fW0Ex@y7)FcHn@_4vSJ?z#1{gJ}xo@V3V>tTBXttV0F)%VkIqDhK7Sc)qdAAqjt0w5L1KXVa^w5_OY@dU_n7^Q*{Xp?NECOGmyi5NJwT-_q;$#c-5 z8`#(01j@n2%;xYwadSu;TGCOqwlZ$QWGazQGuT;-1cfuK{t&R`g)VG-{n%M}QX<^7 zk=@!#sawh6g+|0tc@nmEgw81tM z)7CD+)?mCXdt|u0z`}u`Kt3S4Ej$=HY2|k?tq4t>3=WYZG~c$uUe%$v&HM9kEOE$O z0Dxoe%{aLTU~_y^ZjvuqOP4lRG8z^YEezpkmD;mo1S*PyNJWxXIx8u*V~YpfAKZlA zj39%(ohjUNl9)Y`t8H!`Mj&E`{HUIsqNMXHsWl`Wn2~h9_`M1D9=LTGS*|D{TSbn zqN}%i;y!#HDIBh1t;17;nwFX*=5gx3f^4=jU0wuJax{_Q@X|)OC-Onezj$Y!*AgJX zxt$Z(4O;n?aAl~>*E98y?68yR4w`ctvdpPHs84JXXS$Q7~!mRODieE>1#ts~ldv zo?vAhQ?e_UA&f@HUW1D(e;R+5j3MzZQ!HwM>&kr!onbBF9UZ(@A*Uy?IfrZ!E``RI z57{cn8Pl5%8YegkE$Bp*aN8Ti4Ysu28-v7pB}35rVP^*sAvxgU486^Qdd;}S`^dS60?uv#$-J=h$h!y{c_11=$aphemcOkRH#hL&hw`N+wvFq| z43A@$qW!=qjG?N5`nv-USznpJE!G`NYJ;gp0Nj+bab_dt?Sb-3CpxtFU`^yOozUW% zuaZ$jn7)jE?8D-<2wn^$79W9tM3nRsm$tR*kku)Brg5+vB}?-DNQuAYghJkqOK}{B zs*Ok+H6cZE{Gdw`r@X>o8CmkR%S7f5!?^Vd(A3jS-rd$XXmF@O#b9GeK%GpYrW?;A zhuoFv1{a2HszL51ay3|@SihnABcsP@T^Jq=#&#{5j3$!&ZHHeLhN}^%;a&q>7*f55 z=na*ASspIs#}WJqwiDMtg3Za=$_-a|F__bAF5(WM%|Ta@@{AZ8Y&^A_~W?yT({(f@T`dIq#E11wm2y1~-3i5T$evh<`{v3NkMimO#U_*zn?iZ;6R zOt@Hj65#;PtymCB1?K39RIPFhdjLzz&YHAwW@^)8#I%yZT zkI_YuF)9PoSyoBRo`As#W%C&vqu(NT)668pKzYN;iSh;+u*QaIYZ*$MR#kqWy}@|J zDODM-nb=11GZ|%wx)7Hm%c8y0aEt43i@TenQgtxg7O7YyrmK<4P2mVXZc3^y2lZ~n zz!NP%ajwP;RNlwmC|7J_0wA0gp( z`d>Eruco?fg20|?de0L9m=lc&Hzwb+IIkzf#uy_+!1ILDu9iuA;?yB6Bg-v|vOT9g zu@F&+So$`{*zk<^0@jEMEG@az{{6`CyJRyPqbg3O6tXd?XL_pgU(-%v_zTj)P&CbJg@vtAPTAJl8KXiR$A7rQtWP#Nvqv{2x3wX+Y& zTTWec>CIECM=5~F;=OQs-WzT<>n=(-%vQ56R<2mXvuMR)Hu9*5OJ}~hVMy^%M;S)mT{b34>-Sa2(V|i+Se*B|` z)~YV`LO}R8#C#M#a0+HSed>02YTT4J6~dmaNX{!TYqMUuZ3E-@VN|!c4u(UksGx;_Y2xeL#qHtqdFzr9%n0Yb6t=Y&|iDO%_FCeYG!# zBH2o{A7g&j=B#}m-ehU@E)n=Ndlp~_kzmjwq^;VmO)zh5dar@kEv0byvpRqmvT?~< zPokVmmgD(!#_cm%&z1C%I#f<%33BXL<%~)jN|i~?D#>&w2GtQf@&E?CSOgk~q`5g? zJ|^JdD~%-rgkEO&FQM zaQZAV_TzW2`7MEquOm|*fv5Hf{E0}F#rtUL$^FXX15r(CG#GbEt4$#y=V7-rH?hbG z>euFR6fe{q7ti`ed zCvj6y;rvw#`Js@0gx}7_x5bD(Xp(;qUxgRD!*2(DFUEQ%FCG!lfW)AabiF6LeNjJkcM|Z7%lp#}{ud?1cLL4H#%URs?qssT|0Uws$t5 z4Pn{xFhuAb7IRNku?9_47e!01I)$BMb|NK`Hg2E80A6=1N87i;WBo~eV-Xi=%lDe}@lr9Wri)O2fT4_) z{IpPUGLcE%+z+Zjn~b>wse!atglufi3>}n7E91o8ys*de`0nvZBkjilLyo(}N^71i zLiw3Y`exvj0$#&{7k3-^-(FRA|s(cT(# zDOMInJlhHvSJ$@WT)g3X_@>MKdUcuRoFfQM{{*oZAol64eMUe8oQ%b;eYZrlfLpTR z4I#M8s(UNAI_#PS+@;ll1mF>F%3T7uD|(A(qXCt3nW{{hgB_BXG|9xQ$6A~zo0qtt zsLxBhzPFgjj%CL%RAQyI@zTCs$Tp~ukZpwZiu8{Ip-J5Ar1N7BD%MMSfKiF%EhqoO z8-O`Sy-ed;xKoI`-I;9A%LE$>W-WmUyAcYw7~JNxgD{wB{EaljaD#9ndj9g?q+dBN0Z60nJzBK;>s$t zsUvqxFF>0*n<6Q27r%_U+)k$_m`F7zvq?Ve8Jc%XHlUIY4&0SexWxKoV23S#T&}*i zOkqeH7kg}*W#~2*ZwZ_%2Yy@@_b(74@H!y@@zOu>;J&}}u|tHL&l#<8ETz1MyrKzh zft2gs78a^>v?jo-&6Z!E)JeN|w}P8jj+lY#)lF(W4w;AN7?mDfuGcIFIO7?5@OO4( zdEKt|y`s&e`(99n$RZJ%a5e?B9X!VvY2_XmFY!p`DTvnNyN5?QGhx2yDZvtSF>RY} z*b{en(_r){uPLfMX(B0!`s|b(&)p5I)R2OazWWN=A%=E9o|dx_!GQqtlFTqJq?U8U zc_$~YB^L^3;{Q45)~KjrS~{F}MY(c{F5v8XtL31f4)90Nz_PWP)R^dU(Jb zx5S#pg^hunE0G+ z`-mL#PO7ZuPe7aSAAk$Zn#Z0*FOaK$6soD+E7)KKM8hGxiwboj9vP6`c^O-A>j1z8 ztHYkd48A#fXyqPYj6r6Dk~}D(U5$3+ScKC&6~TLLDdX{ChdAk1jyULbAtzw~UJi(Q z%mN#6uK}ER^E`s_V%t6@)(pjqY!6Fb*XfexL26eIi_Na$Gc>ngw3ccpAv|?d#{P!r zWLNASj1B4;7fSJxlK~ByXU{J^6a*k4u8$5u5q4|~8iPi5!%j_7za5G8TQ-4R~ zJ+zC;A>Xt1_^CC5N-p?_-QYEK?E4D(K6nfbclfhQazdwYNRiU-tI;n{O23$MKgA)X z0A7%gtA7w3PZ0vW-!fEim{{+_8@mD&!&4S>*C44pO{|2H_j%+b{MgGleeIo#g~|2ez1C8~I}U|F z_YT81cUaEDuFR=2_qLV!OWqCGVfFL63J(jMFfHye6KKT+4l=}U8}hz~ zzM};hEl%>4gmy)Yt;Yz<6Sv zod=FVyuO?J2(T&DO#D#f!^8M+DbwktlIB$iz2V+*<@$0SFcWw~4*;F^hj^jm;QJT) znuL=W^8O9Dns+ijNoFn&3-V}U5i>4kw+VIpqbJswzy7x z32rhdJr8d`#DO1no7O2ou7#uBVmD4h1~ut<)7OBEZm`UYeH~bUm_sRoPUImI(EE!3 zBTYRFJ$Tp=*gLSD5hQTg*BopU(mpXWcsX?}ZPH_JH?`%XD15s@QfLD(s=f?~Mp3`G z1-@>jWK0lU+)_Av9g+1J!s&kV?2cCE`irWVhxtV=YGyjfUkvAX{eyl`am^I~sKDv? z3iRn{3XQTG+zxpkK`5%;tI-Z)?7z6|*Grpgck8vICbwoslgtQA_q~EGf$>EFJXFNn zuK29aklgV%|IHKL{3qqOa;Lh?uiin3#0Zb7aALGKTaNBr6fiKbBCw<3*lod4`w@H% z*_(XTFUJO5Nm&^df-I5z=Mw=fX-~*k^@=dhX93%-;!Qs?sky4=?;=r{WTM;Z<_lUd z7F_4>L?kYfG0G@r=FY=R5byzJjwHw{sHD82MLA;(*RCUM1f zN7~r2&JOBq#O;3qLtVJQDce|MnoCI1MI3CR0OjiOSo1KhSpXoC*P6&UFGK3-IJ5p^ z7R7;f9P7lk^1jrmJj{Apo(j`)eUT}(TM7Sy5(ZZ#txEv^zrpjueNMHAFuXiwnyvzGo9{#oTGa|5ocfvbI^qc`?d0gi6Unm+v?$A!h--N_YJ%)(V@i3&t z%tL=2dN8-rleBW?^}QRL?bwBrVyY$i=H+1iVrK(_dLA zFeTUAEd;D-@P?RMcITjaBVxX+PX!b%oOI`Kx++>SUbY}Alv#sQ!3!B7r-Gp}JsUXY zD=@(3dt7OY+aEosw^RQ;;FwhbO$NA#cItmXB%~&O>xpAi!_kX}&cv>FZt^gYkl`_X zMXd5T=2OaJum=@}$zBpwbf&y`6XY<9$H}jv@mLDvFqY!f{~~{%mcM_Lzkij#ATfOX zGyLAM7*V}R^bmPQ+=5ov>g62k#PvBCTrcDB;%6!Z(vX*-yWp{Nh_YhP0J8~ML&!>} zKi;n+(3J&Rf1*Dr12TFS(fPU@j;!idKSbJd<*Eq1kYUXig&NrgTEz%oUGw+t-^|J) zymp~R*;$K>lu|kmMew=_Euwt3;sMc<3!mQNq_#1xJ&-mQTVL3FOGoft1JYwc>5ujA zxOBg(*wdeakq8=r1?A;Naoz(DJ9P}|K9ODIs7XKjP@jjT7Gezjkppicp9&t0y%_%b zUF2Ci4h}Ak)8j)r4|8u!Sz-Ndq_UyzBVUwr?#3&tVqHpN%o3oh&sl02^?gw+uHleZ zYU?;2hh>YN{OQ{WjU@O1@zH@tGYN-Els5qbI#k`0>$%| z^&(15%ic!@+QMB_AOqZCAfUJs@v@s*eJOQ^eC@IihI@ul>8Ybg!qO#C)rP2CgVJfU z9FaOu#!R>e+iYL&B+fcU?(T%5o)d0qMlwh|oY?soQE>Wa3G|*aqZRt~`O+u|^J#aJ zUG0AC97EQT_2g1(@d4Js&~t*?{$P#d7p$P4^4yCsCMc)M)2DoFPF@Vg<%Sc~&Pd&Y zsc*$DP8->C?*`MLPC#Y@))IbB3OXA!=aDSbhpC(bK3hIPKc@h<(HfId7^w;5*uqimCdVqxs z;En5=)N$)0Tyv;=@ImCiTjt=C0T&P89Hr0YIHC`^1aafI9TEK5o!#O=UG!ZHY8*Xw z&8s;~pik{gz)Y_-nQh+G*=fhlECDPZ%yF^a$7KG` z6L05D=gV^cp_ns+=Lx;P1D)m`XZ0lA-f*!UnX!8k4?zu=luPc?sGRfA@F~-gJVQO0 zzw~U!IMQeN_QMHwf~k(eW^KBX;00&64_rjneNc>YoRF@|qP$p7|nfgmfD@pZZXrxDz za*qHmdj^z=kz_gH&Rv9f=(?F6yO)wG6T_+5{7j$BzV77J$?`(puA9JawSu(AQi%zZ zNwXNhY~RNJ7ZvE2aGocp<3Jbo|KMvk3)YFrJ7Td- zH~@gRXTb(QHK3vN*a>!{2J$QScp1>Uis)mwukAEpeH`b7g_AgVat6YNU&x_P>do+u z73j^jR-=9kQNIDK$@w9)2__O}$aNPz&J$SUl^3Fom0c$HGJWGcq;4H8} z8rFAZT&_mBjbVH@kHJwgPO%jHaKpHFmSE$Zt~z108E$Sl z8h7PY{37Sqis(T0C>j;ZBUx@N#&pj{_3&c@gPU3Jz>g{=umo!e--F++m~?|5RDxC! zzbBFA@8G@)KbpQ3Z??UwwO6)^lh-|i$h=W|DJO65TuoJmgXth5^69fJDxQ__Hs6B9 zvc#xulx!wFWjCm7=rms`W=QsU6huz*B_*Gy<%F|W?bon!=~S>xi8;M!)sxb^d3it0 zyxtDVdh=1Qy+gi^p};Hq$n5lQ~VThl(+Ov^7}+P`Poxz@A~HPiBoNvmVMh7N~a1m35f*RfbpHvlc|dQi-B%ge1p z(~+kxNd_X9T(66k#8`9s`&KS z*BmGgjT}eiuxw0S32_Hku(e0q_3vW|C*_l0WzBeeHL?Z#;Z@?#`d7ns8w_c=V3aJE z5s~p|Tc-d{&cJzt@d)ykW8-6l=t_-_?A=D%Isxc@eBwK?A+ z{;YokT(`lHHYaRy*>8*pnp5Dj--ZqRn-m@puVE!)cv%7ZJXD@8) zGbuIFXNydmzE7IT@&8`jnE!rpCtr zBzYbG!{WyLkBS@jKO(Ne|DgD@{vB}L215$}g$kb$3jY8zn|fEUc2XAk6ZTG|tWOCX z$N#jr3j34d&-$N$>oyot*bo&-28>YHxD-p|D43XhTA(X^6aG>I|MLRN@$VE@<$}+N zKkI)MuG?Tp;lEhnGopnL5#F8#-akrS$G=xxg?Eqmv;N(1-3CJn?P>smA;v}k>5 z`Et_-j)g^??rDkY;F-U*4DFnVMYx$;gvdQmLip6SD;G(nb!x!s|sG`v0<3{wtv8R=B}|0Ja6zvu3qTtP<5n6&ko)R!s21@dsg^ydR; z56pKm4SiGmSsxoC=p2T$b1v4-VMNOqB%NUyEp+j1$?N!!h^zB9j8y?U>puk7Z7`(p zE>U=l(0LnhxSs8CEDItkYJ98Mgt=;%?$i4X>%_Pz!W)@=|SKtx34hnwOKzt|r3FNy-zpru6) zH;bgvT)BEO7rFGT(R8@K$&~UzmU3BZDc^3E!Y`&2u9+jRj_|-GfuFkZU1+25X^qQS z#};IkMv;lWLlWQ;zC-dM;&OQ_E{`;E;g>)dOhn!)xlqJo)!VUK^okTvid#E|pUjIf zG&nmOL|@(*z6~RJ%$YXtqb&WUt)+jbSvtRjE#Yy)uG@=2kMf*^o?DE(7<8Y+w!9eh zQAWv&H7zd&;jT1}MOMII96X<6I#0VUcrobJK*jqQa*VM%MsXpwcO|06qLz)g>|G5@ zXl;%+6b(HFO#{P6?{-%IWv$hJv{`+A399eCg78mnLr#TR885mXU17%GkB}APSmfm= z#Gmzl2-j^eq~mT*#~mXg+d3{pFw9;M%1#r-f=vmPYHXj=@(zU0n zJJ-94SR4GvANDf%{Zw#rd_1QX;`tNtXZ;_;bsG#Ro|h_~jA+4=@b)(Fej#}s|Ci!w zy?-wLtp78(Zi69(cbURtL z?sELTUXrxEZB(0Otn@~+hS#DQv<%=GL6c)pn#g1bd3tlK+8zn|%0_GRe81T|{1Ws* zN6-pjYb$`qngIC40MNOdYsr;{Mt_5k!I*qX{8|6kaNPz&N}HD}Z89Q4n|g2ZDBu{Z z$Z~@|659Mf_=XTJiTf;?8(K#1H6&ddisskRL!Bq|^VUA7kE6puVv1reC(Mv{UaKJ`hlm#RiW|^;?MfOhwC;N(zbd0xDP2=Jl@;q20af3M6B4TGm4NlaIS)V$RUCAat>2p#uddv4I z03dqp>KYe!*mQsA$i-0*=;T|CqdUEG)Sj>%MJT=R$0kjecaGfHHi!_|-ou#yEPh>c zYh_I4y(Bg-y=~Ho-s`0!Xjk?y`f&IBvg@lz*C9K2W_3&3I36+sSZ7?zfdN)_38$4TcoX6$*zD5jZjH$Ea`R+1Hojul1dxeZtLG4z-q7g(z0Ng$;m* zicX5O5*{kTj!!hA{h=bvb^1^d$gc~?XYf){3Ww3X>xlq)Q(W%K9A}-mmHKAH8}SJn zOrqC%6O-DFt1-@c^vPTZ9dbA}PwIHEnXmX|+q;1PigyDz`4?YKViXZ>EdZi6B1xQ2EdBZ7`2Z$1^m%LMDtc-+99*oaTqH2xOHisKG$x_meX>T!ZedV;`k(4!3+(}GfC$R^Y73k$r z#c`%cSM`OLC2i#?UK>!j7*+7hd|2qpKD~_Ob}a%1@tV2=s?k@_YI|@Sz!=WVbbEOz zrVlU0S{`0P6_izJ?r!fc*~5`mlK!M@FlqV|7m-jlknx%of7Zu)spu|-w7a%ycQGR9 zE`f6p;8YEqC6d?i7mKU#aBUo5XMJ2A0eB24JlL9XK4e4-JmR&Vfme{c3TK)4v;LlN z-3CJn=Sqdch!!~1)9!EJlqIj@m&A?v6>;$nx3~(wDE_QJ2G?ycr0`#%@EH+-?^?7E zIsov)d)#R!{&pQ;oTjzs+l^4vC?o0Jh=hGO9z5W95YW;v8-@=eR$4(I0Qn@%Q^E}h z8|gG$2nlH%%x_>)NMi@J0cM`&Y+gDT_n70!H18c!xVe5Er@)(WA~%F@fpHLpS7(_e zQ%mV#zaD7X??7oA$3H+^UEl04{;ZGV4rniiw7ss<_F{y}kc)LkiMF5U4+|T*;7^h9 zY`kQyxvZ1(wxb#W-@-PH_fCZ8FtgCY_SIv9TtsUPM`!3>Nn`(=_Sz=eV#oi>bGWwmQcMEHZxeqlB%eXa+0|tRy0Og_ZVdx}; z4{s3H!*rMS*NZ>v!h3Fp& zV=-KAvM`~S#Q(5A!ArdGH*!gQ2^qhRPUUY6{7f?iG_2a)_=C_|c_0^_)2Co!Zq;tb zA1R=CvzDWmjuhV%Ly$aoiy?lUm1_PIu<&`Q&6HQjO=+bIKeNRJ$Q3K(1^$4xV2Bw z-kWn|e~dT&&()RXW}7LVd^toXD3 zF>u`mLyE(z6bDAk!vQuAf&=zq1c%eb#jV5Q#{E;p1rBGbC+@?(ge~LxurQ$~;h!TO z#o-k3XZ;ztZi6Ak;nj)*BNT_RSj@@K!K^k7`8_UrH<;^TeIP?_FvjN(;<4$t6Q41o zD#EE@CNyJ|zK+Nr{jpv=($FuL%qvi|Z?GsaIgXrI4_aB3g^Y*&-yQd>oyot zIIxeRoWcl&!$XJ{%UC}be{ml@rd}FLbiJRwxu&CR1KB{zo|W>n>`TO-^)H6&HW<>f zU$12|VqP6!Pa<$$DtQ&o<>Jr!m%()#3@Myz6b>Wi!8zE#fzA~Dp>umf{8|4BxNd_X zg>$XKVT8`@rjHMTdx(K^wd9TYuM*dTD4+JR6(W5NeJtQHr10LL@EGAihD^(~%KyN& zY|eFu8n|x|7>@r&aTU*N#h>-Bf$KIHQn+taxQuAQlkI<)fd_>G>kCmc?PCom_}u^( zd-V9LaG)e$-!sC4tk+_Db+~~8sVi)^w~IgPzYVV2U`XLyuW%Tl`0!@b54YCy2m=oy z0pK}41O~ztnfzVi&-&Zpx($XD?wb@YBU<{E{c)s$_a4dX_#jcjlls0}{8=Bu1>iBH z@ZPNO7%{KDQ0NG~-7a~x{r_J4S^s@--3CJn=LUtth$?N#{ zi5v6(Nn8)2d)mKO{8|4W;kpfm6zc%N(O zr{fH~Zwm~^|E{<({}FLLh!<)9Vewy|_an*c`2Q}hj-MyQkG(Ot*c-!Ng|}Vd zF~U1sO|8PY^h5*iKP9ii`HA?kcLf)FSNN-Nuusc&WW+o;n+=?wOJ0TZGx2BrC*isc zh7`_C3WpIbaM)fa892X|ypI2rxC-xA;?Mg31=npbr0{N5c#LR)$2I%O2Hx)_ujBtg z+?fBgxN-lF;wt_8PW)N_w{YDCLkb`E8LT%WTIi7QVGt^GxFDf?))qJBJL1ND9C9O{ z6dQ!U8u&W}K0^xsR)x=q2>h6ZaV7t7!#$MP{+P?d5rq|mH%O;$S zdKd0{^vr~V%L->Uvw>3_TW-%I~H)c;ZXZ&d#W>3FUd+Sz2Lk@318*0ugV^|LwZAEG~3|A9g!~_3%X%9OKD(B@q#v;HPieg8Vi#D4l!n1^u+a|(-37|L`*w%eESzo{Bs zib3NUWO3qOSW%aRBVF5nyz3VLXWd!NUH8lXS5+mC!(G-PKI~NOi|Q^27jMKg@5_0n zWYeV?*L7{I6*plr*hYdOj@*OZRhuDoPErS?7NO4dZN&+Vu>hNVmbcH?@4@cxtr7b$7hFnRn9<7Ii*CI{E) zg6kn&zZ}~2%RybgZ0`D{dmiBCc>lpErVEPQ8DjS@P0l3ZhUpHrHCUVU<-LY>x|O=N zYgM{8bGd6Cd~ph84?=I(YVI;~m!>g%2Xg5y$58jWY+&QdBx+8?!?3I~n+99NdpNtS z0f2SMZ16m7H+YT)*mQ$4g%Xr^Qw*DM?K+kvJm14eUxX*}l>1N)&Y@%+h^ez*h8*Et zOTh%HurzE+L_*BjTPc=0dh==$`z?^Ka3~^LfgYNq5;C;;tyPPB*{kc9m)(S28<|={26`#6fYg)DrGZNP7QHa!*VCWL7P?y7hhNL~LyWJgYF;m`vZnYa+oZuLtxbQcf2+H_aplIwb8H?RlS;##0 z*kiaS7bga7ykMN&h|A0f+uGCW8?y@P$Hr8@wU+*?qlKEX0;nvD^uv1+e#pf5XE%sc z8IpvonWXn&j>S5`Lh5J8@q^DJ8MGCG{Z1otn1xV~@CGw-ayNKbu)C1r13*Ge0xn2{ zb5PC5{B#hFD!XbOf9$;noE*iKKR)X2=?S|lX{FtnU8P=0Xw~e@j=~T|0R=#S1Og!h z)`9_%L4>hq0b`9?h-@(6AP0;SVB>&|bHp~bF&K=EPk?P41cGy?T{iCAKj?Lw~**b7-YtUPn2dx%GnKG-RWc%@kh6 z>0#b|QVH4IS?J1Q`&i#8Tc6b9&+uRiw)voG3?o(?kM7Fmp4iCCD{!gvS=t6u~H5ai(L*wXjpNb!`d7wE87nnd?WJ`(-PoHw|zoC{Yf zw}5o01XA~zkHgg*o{BgW!7BZ=_la|UWo6D=UMb|THDqQD8mLs(hu*^NtbJeXzZUy$ zvHwQw4~iX1421aF5EdDj0AdY3L9>vwY2 zhh_zS$LIY0(e{)Jwv+Xt*>S-%Rvp&8J212+pCkjt&* zwFFl#`f1KN;3a_UtA%(=x1-f)N-nHMIjKfnrK|8b#FdM%$0Mvn-41S-ms-R$Yo}ok z2S8ej1ab^_b&OMWq`iC#L>GJ7_L+aXGiouJe~|P7^3S~U@`P;P=FS}Qk1Y!v*=5Ov z$6HT1Ub*O-S!Z?+-ed=D-hY(1ROgOX$Ke7^Z8u?$n0SlR+}IUc#e z<8;+cV3kr*gC0Dr5CxD$$#zH{Hes`Jbd{P>*wRZ(&B;fer?ousW{DP0FJwVlIb>6Y zd$p$_ut>M9gmPL!!i?HyB}h(6NFnzCLPBbH!jfcx%C?jG5IVXSqnyl~8V5|+t!p2( z*bKOb#td?#8=luyPUo}}>?~z-+6i{L*hbnK0ZmP3!%lIkTfkl;dA83KbGAE6U+o#a z$T~G!nu2hdCpLCtn;*B7;*l8#kn91T7IwFT($1LD?&!`qD3c6$^A+w;TKzQ?Izt~k zV0F9MF@0qgedScQ)}TCRyy1n5@oV<>P+We7!Ysh#$KD^lgUisZ&@x={Y8J6`hY!X* zw5+Tgir-T!m)D>dmY0b_vNO)AgBTd(cc<|{63n&U@Txh4x!!;YR>N%;bgzs>ljJ1Y z>faHm#9Xn;BoM{?wkCLLi0Kiyjd;z{IM~cd3wD8F-xg&N8NW+nwb)yGO)DC1X$ixX zu&uQfs8mn5&cHJm(j8AXd&1ZwOG!~$r#iJB$|8#-*PYP@rO)a{>8rekWm@|+cH9sw zG8;jkB2>t(eT^r_lBHO9rc>_7aZ>O2e@b=-lCnF%(M+d^jtcK1BE0vDG(4a1zEp*G zaN&VKV1)ONC`L*Ig_z%+Eawc~&tg{u%iuD~PtCZNFDwE!U!I71GoT1F)?&JQI)PeZ7BKj!SO!M0S!lrU}+i#54BxgTv6ea0$ z&aof&vEt|s*^=Ud4#$@CCtIZ)Gy@!66ETS4{P+Zz)brZwkvTJTPuuIA^m^&np0@4v z(z881KfR{>u%OpTu0w9U$5^Toi zp$N}h33i19TN1-FZh+O#7vS(%0Pu-(F77%$jpLE=ba{paF(M{oc$IsSryR0AqUJYu zX3^QrL%E~ZoX4JT?Gt!1cq8uG`)52>)hihq`kCb|7iP|u?3^OmIZTKFNys%QpRw87 zw9%R=_F0=fgz<8laWxm(FBSuSQ4A{>Q{)Fn==fq`ce*^s%;Ehqs?ySlfcsc{b{#(- z)w3R4>Q?(Ea%zI=HEJ?=UCP-NUZux+FyH1HJaE5k*uZ0(Qi>m^Bm8Jbh)QQ^Ru;q3 zbQW!MkGud!jwAEW$A!BrbXpyZoje+uk+ZASK|sF+)q9? z!?NUIo;kF+J9>a!PBl-3% z7<$R7tG264UJyUVU41oNB_7=?h=cZ0NBfW(_iXly=>*fn)T&Vwdv8#H={D)os__o3 z8U%z@L-4K!ePJrrV@T>AG9#A|OVWwsF`%E&TH(t{vTk#T*z{`A}Yw%Vjt{og8 zrs7*H_TFF-Ot(pw;(L$cBVY`^^9;V4#I=JZVk*9a#oikn1k-KOrTE^f_y|yZxX4Uf zPgVm%XLh*rk-AvSs@mpnP&q;-hkwSyI6I>AaYHO=K>?+up0benW(n)hg$1ZbK! zCDP3E#D@7&Y|>5&x|wN8u_Y@%+CDGhB^8p>3hTD>b5eFG~k zXof^-Sg>-LnDz)4xkksEAg;Sk@HPFz02?tBd;SOqjqqzm`?B_G1I|jF;$LF z5_@lOB22eQm&!5JgOpdT&5qocNI!w1om(uqkrH_CFeHG}EwLb`4s~Q%*W7P{9 zmr#}3pOn;eabwsLM0KhLPMhFViphdk8lV!s1Mo>zgy_fCyb?`I9H*(AXGF;NSryNF z0afv^u~l(lR22uuRK;+{!0k2BLKteNjw6SW9oA30^Sm)VoHGITQdP0_6=OoP2V2Kv ztgmC@K3~;M;L-Z~Qd2)J6xp|fi^Oz-3&czZTgBA+alY7lgY#gzO}eyxd|2xT0kQg# zPEogXL$dxB@M2LWi{s)Lf41sy4x2HGtiu?o;)S8YVmy%(IdvEr&MzB=-phm*JGfL# zC%8h)ba1(tm|wn3EK2yO*n5KpOt(pw68;e-oPdyU>P}J+?NOxjLMye6(~eWqIUJ@p z3o?-1sN+0nMr57pmL{n_9(|{-dF8s@1M;#AlSZ%kqi)AJ;BvqYE+#7rA92u56Gwxo zM(9IG)13gLSuEH_Z8q@$z3KrAxKKS@+cGNwCrTjGp%~a|z>*0@{m5U~Hw>@$vVKN8`O`^;PUA`k=Qb;3cx}dMX#DYRMYJwu935xCLC2Tq`;87UPDx=T^0Qpi3 zfic?6Y=?4s5$M0v$mtFdJ=_5;rW5QGGaXzdCgk)QwWNb<)#3)%iA5zh5PNU19j4o) zOC=X9VwXvPN-pJg59IbTr2D-6k=;d^M0tvU3)gVF z;j%Fo&(qPeF=g=aoU@#bXN;g)Y!ze>)XCy8sl1-vY~}tQX3^wE4BX^1ih{P zV{cdf_iM=;?Eljsbm*V@l;v*o2&q;kA6)(_s<7q|iM(ZkJ+@KSst}Hj-Om%exJT;Sxs!p~rHP@ZRx@+20 zo_u$nzGfjlvQEuoAwJuUeLvmUr8X6NOQ29s1Cl==T+B?P{^U&k>Fmx;VIt~uj1e(L%No5wGV=w; z!Ww-HN9l}ivt@2N%c5I%%}F6jx0|m0f$NqmtX#L*IfpfR2!^TZrnqZQNHD~g${s>L zOQ__k_F-7th=d@@yN9YTe7UI`ZCfs)KX&TqNDO8#37DW`SNi|DI^js22s0j&=Y7_Ry~f&Coxm0$?ffXyrcUJ8 zvps*E_|dp^f}2%Lo%rIu>cncWdYh>e?-9ATgLjLmb>UrN?+xyT={D)oy6{P@3j}Cg zI28Iv|BL8@u_^?Gqn_`y-^D|qR`X5_pz7~Y`yI63Lwk5e z^e(G;7l6Y!n<-O38E;ka;_=}~K`*=U9|B(8!>|T<;om+ZS|@tyGQt8#+LfTeCsOBt{J6T}dZl#0UCK;$0OfppQ;>5qn?>`1Vt`2aA&a|2=4L&Cyvf6)?9xJevL;9iP z-c9#w_sMMAf1H8du77x=p$i{ihW@0U>%B?-GAt@PA(7 z;%y5to#2aNrh^B>RQ&gg9dBL0#9J5mRs8oUegeke-(m27S>oEk!(uwYBVwk5uZXGm z9}+trw19~RE%2-Oq4wislYlY!vGqyT;2x8>cJOsEo#3CuOb5HgRQz8PdvEYnm~N9U z#s68wPk`b-$*dDa)zy_onPtK@f2T?F8-mXczA2`r@ub*$gC}6RO}aDo#1<7D&B94y*GFYrrV@T@!qd^3D^tmInq8RM|na|Zp)|RW81_y zfjh>9b`pA8JBqYFaWC*m<6^;vjB&9X61E?Dch=R0M^6hMlqY+{-W&V?rrV@TdGdMX z2?5HJ@KwG)v6a%rzCX9DxE>>f;!2Frnj&53l>7`WgY2QRw4uDX2jtTjnc*LOa}oNm z;InMM{5PQ~LpOFe9rk5VKU%@N)IOE=chlY^1RFxcv_^Mf(Z4>#t2CUtT#fMw26E~j z2CCxe1w8WnNd60+>g01}YN&HgPYBH3* zZ2KoP*wVB~V;xBwXwIUIYP+i%8@9X>ank@G1gYX^72gGO+(fp|%yO z5cFr0@p^)3gcO2%75M=~j*V34VUEHJsln%99Xi))l0V+$gK{Q!aFZof{}}Dzcx(>daD$e@9a?JH z!*(BzxT#am5gv#1u7Qk~uvdRIqFGH6Us(8Cr7Mr;ZJ~B>-I;jU`zCN#H+rfR;eKSL zaycUI=@_)U$x`;uPQzKk$v}+1!wySzbVFo$9uT~he$VFZCsZS13)hYar(N_{K%@sX zmqk2rwVr;my$kn#kqWDMA9Fo5Oo&^@!Vn^mxWT1Q1vDm*O^WuCT_DCO4_n(=WgK3x z=FZC(7SE6kZ`fcKZFpoQ6gq`v;4}9d;0awV|)o@>na>T<(s-gvNuZ(z$ z@%?S&-*jQ4J=}-=xK_G8f&{U_b$Ery`Q!<4W417l2s<}4o~*40#79S`b@paI#@uel|F^}x1lxRi^x*T zwc@qHG<(sG!1H~GRqn$>!)$;SOya{rCU381o-*2sxy6xrdEuE$ZcD?AiO)=_i`Y3| z6iZt!!}|Hb4~F&g?~|`L#q)J2%Qcqw|B-w-sY9UaK@rC4hHpzhB+pEjCyRZuHv6aq z<5irQrs6D2m*+aMxLs-K%LEasN~=nlS}-9!?AhfhVYP}?rl_8%-_o5BDyN`N9A8mg z6Hlb3b*`|e&!qN$Ao}GF|GKCKD(%5XAtq?Bp}AdAK&pgVV^PRa8z+ zavFum(NUUW^$XV0dUOQLUFq?*YqbkbYPy|DU57T8`HOLDB5^(vZATtFo)t7N@? zfHbJYV1m3)hAV7(>j%QGgon%NkkD>@F+m4ueg!0DEwWr^-mRvhlIBTKiFGagdZeUl zb{o-d*r&I81~*naJXeNxDh@NPCWW;j0%Anrz(^F(7tq(_pDSQWe0hV(oaBFjIyCI_ zGvMfWaKnLvl>?G_L(%UbvM-ngY*v(2_4f^27W z5vor^b@~gy8dt|8hGH^KDvU7oc?m9!7&2A7q)m>IAY0 zC(s-{22C_(^}G;|ox=Ko{Ea_mHLZ{n5(~8w$F=>{vu$DHbpMBJs!!6vba{F-ZSt}1 ziaCk@ik8e5gU^tSeTGUIG@(VJ>D0@tuefYSSm4Mtccq>vYz*4Q?kG?9+!N->;{4+I z^MvCnN{N3x8lf^Mp={gryI8;&hiPG~AInAbwPx(Uc5N%oqr)`)LoxC~=hZqjwzrht zkx1#-u_=Y=tXvtUqj%ggDO}a_J+OW_i}^EjHMpuLnV(4}Ke+#p$>7;P!^GoXNII6B zGn$PtMN7V9LY~Kdb~(6%0W!7#h0`T(;<&uLJCVcV#-`lj;C|{y5c1fqw76wbe-@*=o(WN3G7i>yf;x6o5o^pm2R2gz85#MU>H(&4cCM=g~Amk^5Ufh34Hau%NV zAtB*CM!2y&l{;4RVqy2koOh;jWT%ztN?m%DY}1l^l==z8pFt++B{dnXvgzt-@#b#C zxgKLZ){}Rl3)h$1b#|67ouxV`S5#Kb*_h4QI_^0l;W5Bz9$!-`;eJ0VtxN>MGaA9^ z>D;q|K`y$oz4W8v(z1i<$K$0ng{BX z4+gxG^H?dPe92L?xBw?UXQP&@xAK!QFzTyxt#BM1i%_Pq`7HHf<)4lLfw1Y=pM!M* znV-e`*qH7@H4$NpBBRwju1r-mNBICKEvd)A{Cj^DyIGZPKL8ivCnj|YfZNU-RR>6? zhWA}Xo`&b@&=m_dZk;WqC5PtJYKy@Zi=v13!0L-2o(TrW`FroZEg6}EeDTlnI^q?u zeg?(2O~}IXDHNVR{#k!x{ImbY_~-nM@z4DmeP3y68`=1w%Wu+D)&Z-Cz?u zqk@K9I)yIWR8Z7*VpW(nmMjqlI(>$y=8>-Isit@)RyB*$_X1NEL(4q+VK6!1_;ZMN z-$9Wte^6|zR+uU;>^B&r`bD{jI*iKXW23xkO)jJV;D9?+P}=np$Jii3dX=SPSrC=q znP(~wctny(v;OmKP27W%x`Fe5+kX`p+>z;B_7uFJzhhGvn{J67Y|)Y0=4V=+grf?J zVgJ=2w*QtbDD!y*`>uJoERVfIEaYAD`kcE)-@<_{N+RYt2Q6)X^)Q`&XctmK(yLRo2JH!urR_i3b4cc6G~WWCWLjw}IitRqVREVXb6fD4Ei=nzzhEdkK2P#r&s zS`RITQJ{Ajy#B2eAWg%YTwMq-SL8+y!-O=rhd8@X{c{qGH-zQPi0fCV=G4T?nXyAb z>p3!JVyd>*U5?klcH(fSOsHc^b{=C1p;JR-g1HD{LfG{$AOIQ-uJ;`Ud;@|{l>LZB zEcTR?VyT1#ca*$@XfR1LrnE9cP%L(23JZR~GjLAoV&LSM%*mI|j`O8SB6_Pp#558< zL{~o?j2J8p@5MV2o|q&XGGw$D+@@`yu9@G2vK&1RdCXg)4k;|cBZ_qhMt;!sme$V~ zi>&~E5o)}PnO-U{YbJ`vmiscfE@^s_NsIANg7hhqD&Vx(CZknv^b?1OxTt0F%9o=tfmu1p_0AbtGX<VG<-Gg0LGh*Lal#0h^ciF;_rfWTE6xi z!mFb{U;FpSF+DHGIjuUoAT-OolSv&2_Em9+7FN&zgiSo~Z-IcBlan^kYa`ICeC;|q zWIW5;U}Z`rbFOL9?be>;4*YSvXQ}tc_TuezsQ>He?_)!}+n+DZRNJ(CX{y?$=Sw-I z&FjE;T%wq|K)D@|x-edUiDGA?&{4vJ-mH73H)OL}tfB*H!L$q49QbcVLm<_|UHEWY zriRhs4;_oeWT;{9!5nUA$CrTDx;>O-?$y(|4HM3npm1g)u}PY#fu^pxU_D12_H4UEjz`0 zX$Y5PzX`Fn8Gl!AjOnMpJ{6p`@mwiGxS7S@6@^_-nW#pn7*_j}8twCH=wC;G5;Ivu;OdcI)CYwPH-ukKqw{broD|sDI z`Hv#6IwUqD9XmE|@LE+k8T#r+;(f5i^4j2nVyR_^ysb zvsrj&3k#ms0Ga@{mIurP_D~gk?DmWAdl4u5UG1k{1=@I5(18dZz8QCb*n5L2Ot(pw z?(G6`+($=1Vjtbf$m6RGo@El(4$yD|pA%qP49s+ZeH}2dCv$~ZbQ2kN_5j!$)L^lUt`igOi*jgaTtb*w_>C$8# z&}0bEWUe;JOti2e<49KfyO@j!=a&#z>ZR@teXU9F2oxXhZ#hy-yg@2vI#?^FroT?? zy}{8i-6ma{{)3u60TDmBM~H3WF5rK@eJqcGIP=_b8K>h>gRleM?by?&Pqx2D9B~~> zrnM*Oh$F%|aXQ5gmFfMj+Y_@Ly?>a&4$0tqktZxv$dmNsO@6gqiWv;eWf1AA|Pmz5wubZG%TqyJ8+x>TdVG`3RTkb2OFMd~`dK?Fbj~>H#FJ!^-S9ElJxK zTeQ(fX&a+i4*Ag1tDGImIria@$z_}m1p|= ze^nlDPL#(EQyyEAw0)^X8+~4Id8AV>F>=^yQ~!$nPh%Tg96e|?xE~p(!3|~Oth2&0 zNT)ijRO*e8TYLEb-%7RD-CY0gZ>1`t{ihxk9drFE$g>P4I`)j;Va4}^JcqG0zYfSO z_qK+87tZC#SPi;+G{JU&H2|2nuR~1S*C8g_>kGxA?KKt}q`k(11=?%6w7rIchJ!f* z#%-@>MeX$&2oh_rA8ge@`n=%w!ICrR8>LO8`Ww4%{g0!@;8_;KsQT3*m-313oCCeE z9?hGl^(Y*_zRB>U4pPGI8mpm_<%?muO}aG8U(qZR5N0_VKi+QeTqbdGw}_a^!cno~ z3K5vNLIl5x5A!6lkbp7x-fZw~lel*9axoR(6=LrVUIx=`(xvz?4kJDS68P3a4xr|i zvcFQ|+5s9!Df^vbDqeJAl5Y%~fR`@C`!&T&Kmsqv&2Ke$ai1sR+QGGAD!yyP-W#A; zfR8T4_n6`%U<|&u8GJWMTsyc?OvU#KvExnvn79)Fzl!hcijRNQ?O{|6+l9o#FX z;(Nc?djmY73w(4bKHU7y`b$8BkMn`6BKhcOe0Em2PvWoGPt=)^sd)c_>JauXX7-1J zeB+2%Bx9Fe+G(itnpp?+qS>={D(7eBV)g1Sr03Mo-aYIifq( z0Y4_l{-Y>$=;yR<-(%8xLh#zb<6=6&lVWO`yTy)o)M4Tsb^L0Y-_f^uHzc-r$=s-6ma{J~l3r zhXllU=%lt|?2NhGKYmRlkA%jqiOfS0LKQ43C#{1s`Et)98YEAih)a z-GC43sT76;tY)biG@NZ~BIt#2+TO>(S$CR`W4U0fy808Y>7lEB1?qcW!WD&-QPhqz z!MNC4yT_9Ewdkjt>I{DIhegYUz1n{=r>V{we~On}PsA9XQe{N;;9 z8Oz6MYOo-=1jW^wkOn8!fYk8M>o(gY8uw#S16w5;kBZsX_`aC^jo*kltuduc|LMk@ z(O4|*nT;dFoMqfzu5q>iynN#oYUya)rIyadx7E_sm^Dmf-o(b4YMIoyO)ZmUCF!o6 zTuJgKg|xj(Jd2G7#O!MvV`w|g(Dq${PjCE4%o&Y8i#f9~rNU%pH5Q5q+SaKh-`FTI zy^h8vg>*J9QA<~2yILkTZl+}?mqfv(4X9=FcHeBF3<79(cRmELyaaMf1xpa~cHbEJ ze7Vi%6_L-w@G<9@F&1_4a)kd&lnRa>KLQ^dJ)VL@g0CjMxZ`zn;1msWYS*u# z3(G~~a_UznJg-T(Zb$}wMZ)t&x9v^>`*f*zZ29hY!zpevUC#y0l}iO^6` zCqkb{cgV=iiJ&717qp%++M#ERxuEfgxzH)bTWk=uQ)yv~v+vrFXWs{H?gP;g#VG81o9c>}6ihEv7M^u#8BwW|h)hf#C5}wy5 zTsI_KnBB*aa;6%m^p$Pyn-ifigHMF!Y$xK-tLYfBdax^bWoYeD>uCa|nBwForAIei z;NpxPyGPH9IdS-zTw_u=Dn=}Vq8E9mRpSofZtb+?V|0$|gyQ?Qu{kC@^n!K&L$Sy& zxWG0zdA?trGG0Cu{WrRCto0qNo4E^%Dy`kz<80#I+wSb4>$weo&gsjZtj6;Ac?NbyUKIbD7q{!v49=1_}#B*x^AJrNXYWcNqSrij!SupEP`z?2CYAGli9YJrfb5|IG+u zsOQZO?5ax>dT|Pwq;_Hve+@LfawxVF7?#2QHhk~LNB4a&(aDG%+A=W-e>Lp?VR4jXQqu;8^Yx)YGbyq)y1d~7Bx4Oz&& z4+S(4hdKw$ZDmgMa|EM4`DbD}!7s$rIsZ?^-W&V`rrV@T=SX{WjzoaYk+gw@kUoC{ zD;-L!ffZ*+6L!-GO~00O?cg_JI>E2RRGR)p?7hJ+VY*Gal%}VZCIVu52-UBkt_$A( zkhpg6?_xT^@5EHRzZH9L@NY2PCS8j68O2M0;{8^8i^o|5p6Zs_L;cru;N}Ee!9#x2 z@&;jim`7-Zg_b`^dUo)8F`eL#Vk#~FCHCInKViB}x|Eh5DlG(z$>T>2UMr{NIYCS( zu*FooI8`QUz~=-nU5fWdikE-{Ug{g6C=q(QBre_x6BBQRiHWzu#Du=FTP&JTr`YjU z7)-nshF?wS$C?lUn$SU(zXcOK%l{miG|OuK0BsevIX1p9ADi5u59EAJVDQ^x{62(Q z75WJbeoq^}2V#B#gWogsy9u{Bg?@J5L8b>j1&MD%5)uSKf5@QMTXJKbB+=Ga+ku3@ zbpJ;PS;QW@bFD^pK}656UBI110X>==fR1<;FrK;+Bz$BDZ*f2PRBHR^w18UIL03 z!cdxEP;g+dG;s!rvVju=6ayG6M)ym}e(+iI1S0 zl&Rl|uzgj7*T!Qb>GB{79sBd89C6!sx3i@@6)z^^9&pQl2ZE2*P&Ry)1U$24e;%1; z?w|WJ^ChFq;J;heXK5`IM*kb75KO{Q-16oGlWA(u?v`~5t>w`au_2*2Y3rOrbutM^B{1Z`T&|2uBfjw&qL-`Y;5h8Ku+6c$4t z+nfOMC*n--Or(Q>iZDA}UJzcYGpLc$daW7aaKy?uX%i(KuuLYV%ihE=4xY6nXKeuX z1Lq*C*qehLzXS>|JF^ilvr>zcmqq2}NtoJ@dAM5at289*Lzi=KI1vefwGR+ni2I_A z&mj%&qpny@3s!HMwD+25KgbwHQ<8;84-OU<@NTSx;#oZjJ%9s)O~;@p;B4WoR+A-* z;ivx?lEZCRw*R$=oO%`P;@V6)^>LIv4z8oUM6c_jni3zB?6|}RqUuA9?RrJtQrt&x zEytptfkVpH1i^`sIhC~Q&BlQP*W1t9E|R{TqVNAevr9|}HnTF{^}Ol~8&@v+=-^So zL{ynK=(iCF<8)0-y_-Y={hgTR*bGAa6G9H{v6?I!oGDW3CB8wsuXwX8e>dZc+}o*> z!a61F)|9L!vrwN))?@>zKby$%+WoP5UX z7+I4;`d#??@Xb|P3^*+Rab%%(l32e%E2hwZew)@+ zV*L)STye7e@6tLX*6-2kiS;2^am#>KiT)8ECy-pfpM~OMtpdd@H0l|g=0wn2!1;Ac zY{ij)fEw0gc_%dM6cAhxBBni%*tF7OP@sb5QH}llMsJvn81)B0T&IiI>;FS32{*vVz0EJ%$a+4**dNZ z8N_#l(P{?(%KCF77j&VvtEy~ z)m#QBgrgNAQ-2X+^>iA+nTn@HP$4_;JF~J$=k=Nx4=;4570YG7(uulH{-af?9}72} zy)f$6s=WY1b7eJMWOQVtelrJmNwY{964!!!T^W*XQ8LzkHiLpu!xVuU?wGw86ZN}?Rhoo&* z*+T2tGa_%GW#BOhUlE_{&8_TLy1*{hH;{O{&zSvUhIyG=JrXJ@1Sn60dY}WA`c3#L zb;6YoUADEIgOcV_ToY7(1)w1SsweDNuU`*PNFnL_A(F?@rkLzwS6QluccZd{2*sGv zpTWURk^ZA%vK<21x<>+^sc(k750<(znO2R6SEP(9H3Dr^T)It0Q7+Rf_$gQB=?9s>|Ah5^AZtD4~1>ZB~jbLjRP%&GqlVx zsgYd;!!Wa6sd{0ic_HSukfe}qKf;jlN&!7<=inhP6RtFFxLF$R5I*>&u9xO7CL(i?%oQc}b@SZ^lVccICXj zN*|uzl3sXHQAkqx;t?o|4ojT>z5*c zTgGiFBCLzy>UQdW%m~Q<{Vln)iSKZO->8FphMBHkok+tDI zQ|i-4{5g=r#+O+P(^_PBebo&a!@BzUfR`#DTUw5-OfKGXToePa<)~jmJcf{&)oi99 z84Ozz%1c`I2Yw;emh?qqPA#vn6gx5;X=X6eoM>fcO|kHFAP1PCj7G_X(Zl|LV=4Zb z(V_n^B9(D*97pv!45<%rv@fHM#uLasH34#?8-w(yuM9I~j{E}fc`bZbL!Z!wPkcjs zb_&}NbbP2|E|U-Bwo>sj-h%4FFlSzsuP<=yg~29`p_WhBJ9$&0>`%oo!?#kYFM_u? z(5o$sP5Zw0WthyOQPQ>Vz<&Ibz zyty(1EG$06!~smI&IpEb&?2~fw`{>;!92W~x1kkWrh3?s0?1wdbf9v){Z`$;swsoC zrQ2zho@hJ8XWqKv=1p2qh=CGfA61_R<_=+{O-M1bybaMbZ@QtUIFdF5Wj3cb=$wzK zan@r}yNA|sQ%gsQ4YDMS0MD(SZR*UhC3VGWat2=<-GVwFs|Lo(9LRts;@kL%wP$Vo zLWs(GZgu6~M#YdbYi}hjYgSM}@jemER{}N=R`WTjC>%WR!a$_!zQ ziXuA-=Jhc7jly2L3Kkbr7FW!9%lcr}F2YYZ?8K#G&a$~k2$@y%gqWfBEC@!;rDsto zP&kC1G=vqG_WBGIPwixOVJ2vd*y840UcOqjd~Bd}aea`PRI*ObtM?!xPbt@XS-_e= zpC*8TgUls(voxt%j4SaNsosa6OD;i;3TY+@UjD72#O;l~`#3}$FDtb>=p%_}k|TX9 zQLiDC)OW;FL0)_?(H%z9i9M*T2Hh~Fc9Nt~DEO1XyusR$aN4+eU7L7xN2)8p<#U>l zim$QHMig!F6%cSzpiw%rYi6TBr{QB^cjB9hk1!wK0(=MII|Lt_#iQ|IDJeCAZwtQj z@L_0@x(pwuve)3d3E#c=xU~Bje6PXx06y-Q+>P%)@!f{+?fBk>?VaUl>3Ff_34LgT;HcvcN8kP!G&F(Ub( zE=N=`wU?t1y^TGoEax*4l!eVf@ZtUj>U z^@f)n4o^6iy`6RbT5+tYz~|UyYarULcgnIHacphF(U01C%&K>?jN=u;%dNzov_xvt z5OPiRm^cB`0a{;O5(mwYP=j&MOn{E9VjR}W`z(MqMZ^D=_P|sVFK6nsQI5?J<(Sur zGHKx;<;SkNv7Pc+EAMH`A_?D=q>_ZMttO}>;hU0FlJJqeQ#s2J>Gg=*cwHc`)trt@ zTREGAn99C26bq58STJz<4{dE5bGE5^dOWk5hcV1QCYdefp)Fg?!wJc3{e{f;x|I7J z$?SRgm8-|0`?%`pSh}~wLFD~vOyXljsl3O2rdH{a?zNc2$3Ud}xGH9@txymY2*KWq z$jh5DDoPPqUQzQhF|4lrVHv8VdEH|~Y&e?5P1CU6q$DGztz5z$w!NI?ZO?>2^sk)U z3fQ-~CG|CKDlrI5XXs5%CepX^8?7*{nC-&Uw;<7J-XWEv#V&Tur&hxGX4tWNp33h) zGRgi0xa2hIfXgq6^IZ^C_ltwj7CVJctboclRmauj)R!)NHwf(QBz~km80^+P%T^pkWt2W zIjA)4NvkeA2q@+F=g0^D;wkO&=C0yEu7tA_MA4GeD1L(WnTwx_MTYFfY5xd^Ojalan97Apr0oVS`;@VHQPz^r1b&>8=*A8I0*+^B7gPd6 zl}>2*D%}}xWhGOZJCFq_Z8Jx4Vnzxrm8A*_#Ysz-&j=kikd|;>R z?O!>}g*tU&>0;(>gX?XtOe>wymLJ0(Z2w9mU>W$Vc6gZI8SNe|#wa2mGs&pVb1x_) zXk6a!Ujgs8SEiSiw2^>2Q-!r-lES$kS>!Z*ZA4?^yHNf#_D}&vy$9I&Ez5LDiGqMC z8Ous!bR^%VMf2tlnYJ*UI%6;NuBe78x3*>wGNDLknvCpamSzNJVkkIBhq8&|8sqZk zumdN#p3lYC!zzc?@N5Edwr1Jq5X<$}F2kxn%wv}|F@~y5;!rzTj{Pc!UbhZd#VT`Lb46S;Pq@0;;C=Ew6r}; z%neA;rm+OAO%6|Gs5>4($wmeXqVr;_JW=#^M41&i)sXR9W`KZm9p)J(3 zu&T6}QoCG+ys_c?jFo2*v=;^(K3<}+e2^m>D|~5{It?@SD}u+Z_LN1|mK}2Fi08q~ zX842%vnj>CFh?eb{mIgtl^i{a?mk8dN)$|Azw8|%!pE&Tf}`1(zZP#|+Ct)2C+Cb( zyh%ab%WUkpv4t2L>bDDOG#i^Ff{Mmv3~7n!6G=NRNe4+gIw_wdt&RJXuW{)ZM+S8E z6_&3dF&fC3o-k@BTXH6kL{lVMATv&W!=J_*8|(y>ZP6MO4gcbK-{tw$fwtBqoDNNn zS{IeT#*f$tb1_JoQ?ze?P5ZBnffwZ~Y;W6A-ADWX_f5C0E!}6jcIqvt&*P0X=1>ze zw=&)J=C4}EI$!Xy#Tc(dVuCFF-P~ktnz8agX)Ib*Su4;H%dU~Of9b z?DJmHSRQ7rJZPLOtWVO*ENn>9%Sza$*4Rt?&_*w_un&5p_Q8}^@0bQ+ZL&2WZJU!^ zB5iG{lD2)MY8qP0o2oK`{!?q3AMvwQ*CUXr>)ZZ&yt;lipsXKD&h@~wn@T;%F>tKi+?BV>P_>sVZ@}!I>eR)Q__CJ&EJUNNfzgDFMw^== z>%T!DIljVXEo>3SDBO4X15meP933aZn^%1}0dT7)=w6|0b)D4|^uGZ5!XjuS=n4a? zLY)bk9XIuV8B3}w`$0X{-dM=4+_>0saSSGVtqQ(N_6p5Ea1HhfnRS|5PzjDfNqq;y zBz`<61m8I$Yrt;VPVz}W`8|n{*l#7U+D8CDu;t6%04OXgR^0(elF7BtwdRQ-Lv_)m zPuY;E|FV@`Lo5|Kno(WEp|U$jU?Qj+%48z?vu zx;Qq;Sxgd}7?@;trm*)Gx*3yh#-y9kbnoX-s8B49!@GCTOUNkn)FoN$ z#gk;Sg~eg98Ejd__7aIgIrj!b0Z=ZBf4pcc|NnrQQ*%~#u7IV#smRV?ZK1?x3>DBy zLY=Z}YQ8(~&u81VCM-`AZbPzwrwZ*$ast=lF z_f>M(aln94-?_8iqG4jr&GhkwCIW`Vc1-l0iqxh>4M>Y^<>NxF$ z%~&{_q#FqLB!qC6w=9~XG>$?mA;U^^O56*SPv%+n1&4RbWwR-77Nm&dS?XTL>*F?X z=66D+Qrf(C%`7wsqHTB~s@W)PyKdIU5^AIk;e6kb{lOrsEwghfiM5Jd-u%5S_T#NY z9XG}m+H+OUbtnQ4{(jgzxmWN&8b|7 zfkNfn(#xp#HVnOR9}F%01q=@=!7| zUEZD;Z%$wQi#XTV1|D7=iGx%hazq@&G2SNZRfvr?IL2EYF+5a%gi{xlDR16TsGw@i zleh@azc{j8VDeuq7oO4KiA-3s%VRve1IdKuS9m(3wM2q;V0=NN4F3?LiZOBleM+>k z5$8n`EkiiIh>!56uMB`DK?U>!M=pB=)IznjYOVOT+NY5jE01Z5z*0JF6^48XG%ToN zR^{8EEUOb&{jQC}EUv>>aic<<5Sg~GA|YeB<qA*IJv@y1@O2P2sqtBIunoi-dYmK2aFqzuotJaYiVOAunj&#Q!W1-rbW zqG407+Y-)c4FqG0XU75hY@D=RSkDSexbd@ark`wz6EftX8Id;c2N+>|8T|mB{0YzV zgc32%5Z+^_)i#7bwQUFwrTXB3ElqMq zlBmbR06IpH5l1|kJu>Yg_wazkL`UqzlP69Wh>R)U~$1hPIKUev!1D zFqXEqb*a5*`quB2HaB&raE&c5<+QhoGW=s~J1I*tAq{mX+w{!tkX^>AdOR>Oa38En zH(l7@EfJF86e;~f1(zWG3NVv}^!9Pg7t?$mr4kY7;VYTiijE;^^c?jfk1C<7z4<#-{nZx#&Wj{eS!%7<* zQySH$L!|&Y<<#CCdIDJ%Tc! zjy(||2fK&$5a)c$e}p<4&!DjDJeU`4_J28wRp;)ugN^;7g}}?hs5@@`r9cEcN=P!E zGo10UZP+cPeT=toH4l-BV7T?O7;TQ`m4_#1BfCThL^%;iIci&)?ba_qNTEc$g*k}` znSdubas5GhcviFtnzx2>b{cT2Ei}q9Rn@X%1?PMpV_R-S4i72|Vw|DaPHgo#Avs#y zI6-5!S64fMIoiKV1|S)ny9?423YfmpEr9KM0vey~ed;IuyfZ#Iyie+oJ&* zZ@6-LWS@)hIV1WcX(w%;Cj#>6@_r#dX9H#bEnDP3kBjp=4j$W0>j|E)hx7*!COq_` zVMGJXagrkk0uZ1(KAy36`Td}=e2|?Oz`6#k58?gPwMVex!#32;6c+NO-Avfb3$Umz z@QiKP_hC+C8zzkcu76o*B&5*M(^;Cx7yB}9RbRIovNH1So;OhWd8Vth&B_^P^+G%) zhZo;)#*ZdW3ohuic-{|UfWZF@Ky`K&d+{^5%!u4*F_cyNMF=sdH$x0{JHWDNAUlj3 zU@ib0hq4(SiwY8|+rdHZ;z*ZyweITd@Z=2ce9X8ZN^2;WS!5z<6oVKygPzF)M|Oa2 zKrR3ZO`K)Xt6#+Ob!+r2gbPr;a6yPzQLS*{2nH`sfYp=m?h*7|;e{h;BE$$&V#KhS3eB$h)dUs0nYn4x%!cz6Ke+!LYqAuGhPX8YTO|~Or)O=m7sD z#TmK>Geax9XGblZ2A*dHbsW1zRg(T=9!zv-$eS<+Z(Z7QD+&-2Km=^W%Xp}^XK14} zdI1~()(3E_i{l@K>~ZjOG|k19FGup(J(5)Pg=X%7Mviw&bUSuPD-jU&)(ABs;IyIS zae(F=NKIr>R6_4zz{NkSNgTGEzqjib0*_rkj@-_v+0Qp3iIL@v16}!m4h7luiviGi zQ4esTFG2nVANnk%$whXrHWG+#)QBC35{DDa1&q0*Q-~GINmi2{kN`1XPTgAlTwBM_SB&|CpIq$fK^_FOHOq zmvE!TJl&XQ7?a}@;=z$@F)voL$+U?FornYcc0dc{yJFxtx2gFT3j&GH@ZburABKv>Pp(|0eRl z-Lc*P?>>+r->kr6O>7JRCirhv*eU}2m^ZwVe1sO+Q6_8 zcY=Sk!VWbs43H=I(4sT$kp^}-VQUq3jDc+EKUU+dHLwc_!|k(7bDe=<_96Gs;`)ormcWjgoqZ`S{+&cI%JB)7f#jB)FTj`!#eglPxDKLLb*wxHq#L zha4@!DHw*~h6LB&g=B7KX~IVeG7F#EnYN>4*lGK3VHlPpV5SKDw-Ls21k4nne=<{H zIRa*i&_|c+-pq0YOo}i{`E|s=(u9vGNFnKFmL_1PAbnh7;NHyA1WXDt!ti=xV41?l z6sM0-gnKi~6tJ-T{5u$sg$SUOUxeZf^kGrLM@o@COwoTMeORFIk+P%@bLihj9~LWo zHj?QX+egPjjvY^D)=vBHKp411pe&mOn)dG|>>in63~)tB`9pWv-p<8o+q*J}cVSz=^CA*JLo(>{ zwxEv#XJIRF_FfVNWQ}U9YYTYs&>!s`b&&191V6)*?B1=TFQv1ApK_SZqZoB_TU37( zL5A=$2CgQ`4=uKRpmF`n=z#27sR9@^ALDYnIQl;D4{z5#TR0OnMdwpTSi;HC_rlBn zH2E8kV--j5eV#b?g>le!rLZ}r+b)bgsBsGZlk^0fIAi`_4*hr2f0kW;EJbRyu43pc zx*U6WM&n%M)sl;18e7H6A(DSN^M>1WF^Y5Re@1~r7cs+s6D*o3^-)oH8NzNe`h$$6 zoxj_7^=#r5WREgwzUg%e()}lnXX;lV&g7IeC589Eryz|zT^OHY%8?&^I|6UBho|_r zGch-o1g;zU6JVX$@jNqG8NP*Y@n%z1L$6TgFlBXmC~ZWzd;S7%t-S zKXxOn=E#3HxV3E*O-(*;U&=srw0QZB(t=DKvp38>%JZO)fvudw$^1G7-?-1kYO=%1 zI(jSkwS;BrNIO6Ll|9{=%hm!-SFY^lbU%rgK)eKd;uIoY|S%cM~Z6r&E6|B=&B)-^m}D zrXkwm$8qDfe;caHj!ldsEs-O?ekY)#th8u{CZrC9Wbtoz6=Etlcd}G>k48?G&u;c@ z>dSIzk-d`~-i?OG__BlF&8}JlQ}}kvXo$W2PD;S;%OhWwAC#%A4j%+j`meg(; z{0J(R=WZEXiIbw!xCAZbPBOMA1J<1pRnKVsPVllh52@H!(J7hO;F& zL$d=q9NDvl)`$0{5~1Ti4eGI=T)@S$c&^|BC{`+W${FZkDsCxT=qepv>?*DDv6}?b z-W~Xzn#LVVSHe=*x}eb41qYV-^XGKHauqF|r78U(Gz8+BRnV9tc^OcaHAG<^RP@nD+>_ti&zygJBDM`25HPDuX(n zSR^`Q%_s(Ar_VYYmoS3{jyER3jQPVmbvk`nHtf8<1v)3C{12eK@ESv9I6I@_WM@`i zhJ;>;R7Ebx8-)2V!oc_l3|^9(FO5i$E?iH=5HOf07|hQoLm>2rG*T?C`1rTLd#W=j zB`oT8{9ED9;|kX%C72OEh={y-7%xQFAUcijZhZatYV$!j#wE&&B8MUQ+EjrFcM$uN zn(U`w6h>dgv@%mNBH$w(nH{etfD%t$E?Ak7ir{KR2*W{t+7@n7(%q5i8)eEvnWC72 z@Ph#4Yd3&ML)|`UVH&TA)3Rvqv?Rk#O2*qeEffUmi+M58Q~%q`dW{3d9glAnz5#p| zzS411CQ$Ci6siAOu?%l90FVu_!lMXvt)!N0I|bQi)ZU@8Ey0v90nC8SfI0gt{7 z9(k)qsmI1Dr&fzKS&%^ioQ-c7-x7T2=2Caz!;nHQuC0wCHadvUf&kasq~lJwKL>a1 zMd~MZ=oi9pwUw~%xCjz24~{@7Ua+LbO!GgFXqg>b;pGj#)ynL+5H?Gyp#KG?kg2~8 zIU20}HMmE8(drCsAg0 z5Tla5V|)aqH9NNNB{uTAH-a)dNDmN)Sp$pjCqr~1C$c^Q%D#hg+;K^WKX17S&bkq2 z-7%b%@*w5zj*F9&V|F7<*S0mCdOgzlF4MU*na)Q+kCxJomyp<{#Pw3a^|6*$Bk~#* zuaAdbVKSEg34l5>6l~+mpIZKHwzygNj+Gy;0{q2HR%9lOtTZ~Q zkATMSfksOjR9pn6%_-zgo>^yQ8?wEVRa}R5Tme!dyut&@h$WTJWa;vV?w5%dYn*sR zNhh(CnESs1%he@3Z8g!^oJM}Vg_|FLD=eo>wkJCCiX)Sq;U5p33uOpE;)fOaRzS`B zgcNHU{~E8Qvf#z2(mPq98gGf5tW}NoL{8Sk#-}1Di@)(`14|h@L5r0R zuA+e(@vjy$9b6-(8(b@9Cb&+_Y;ZkH8#kz1P1*)P{?07|#Feginv9AXm6@E}_3?ew z7YtE397grpx*&ts6wc`=IfYKQ!zose%*;-G;mcP%K5Ihi#TRt79H-4r?L7PUuPvqk zmSbt1)eILs@v;MMmF{+Mas}@qJb=WmItyI@R%HivzTvji*3&Nb&OTYl$&N=O7BnQg z1fhcLkaeA5kAnuytMGz4sa~`nPs6_lv!V_h=UIT^DO0~s6Ti>v-1_3D z2B5M{ZT-$uxMEjGBJ?zG79lu*b^@Rz@ILsXaK6J(BvjnX)lGuqZW2znN(Z9|v+ncG zMsgjc&Xxpx2d9ICcLxBbe>D*HqbauQR zGA|KSrF`=_m=`zRg=^1SD&_nhNK2OTqUVRwsUQC$wLdzN31n|e*Xg8w2F^SK{&_v& zcuI(cT5i~=<-84Q0dtQ~-j=6BS4Sp`HoGpGI$SwnhEu{}3BuA(1X*t|6_*{0WR>d@ zlI%}}JUm3kf*78z5;Ke|I>>k|_X@X{K&yuBxZyZX3Qf>4QUcvkAv%_$1feAn#L%Xg zvB^Ucax+ViJ19`a84I5&pX+)R#j2Xjsg65ORGK&fUcVS^t%A9!0*}J%&k;c@f?xM^PL5cyJ(aYi+6%aCB#>MBO>E`c-d`a7vlh_ zu)j15qpO!9Rcwef{+(`Pa^xQly=3fVW3u)`lsVqAaiCT~Nkp1t*{RYYFWuxa%Rhv% zeYgl<)RtKqg;K^Thy@|h0wCl(1kjBs8&;vegu2Eq;A&*Y|0XJK-d&1rF@?Y* zF|;GqrQOaFXs}Yq{uU6FmF5dc&Fji6n=%fP#fqdShGe}Uu>?t%o zV4wtA^eBUe3zE+P(w&~BNGO&D2`2qxki18cVCEko*|dt&h;C;oRy9)OS9`)(`e4E* z#o`<#2_MdQ=~ zz07W-O7(IQ4HN^4g0%qgit$qXFcWcxClxwN9a#+SI=OX7I@8?3e-+Tl1j%M4FSqz# zo$c%&<{h2gvMHBYaC(^53Dr$XTy=hFxCNXBCD^hg0UE4=r;mnb=Q7oqcoeB0XMnTa z>HgEpU8OF&SjBzg-k(n&#?}^53tG0ciY>L^khGNv@Fl25I#z;)A%*=b-S)b?Zq@2Y z7dByNw26;Eu2X?tIMSJ3H^43`JAynfIv5M~f^%r1W3O{ZHkDl4<_*#Iy3B&UR6;|_2uoddJJNsuS?Maar|~g@2eZ(|r2wYwP*>?SZzv7n1>1T1 z8ZsS?k6QxL$GM}Qi@tY5VT``_;?C&f92V&#ogRHm8g#cVWYByMuINHG{z>|t2R`8$ zXEQMH=wlWXBKk1DOuC1vGfUA01Vt)O1!2Yu7T!CvC=2dtd@@JVDW{i~I+}<;N8?i| zO}oHG9~4cW1`sqIQW@It1rQoUp8;SN(QT6Gm;<7_oI&#nTq(MLfwXC?LZSdhKza;3 z>X@rddY=U_h(3pFcqJ~`YROs0(IJRm)%N(+;^Q2wb_OqwvaK)q{kejNw z*4erNAXhVX^kOY|WahXaA`~BxYckxncq8mw7N~kV8)%Gr2k~VEi>c{j5meM}YNQGl zDYb4-QB!cDs4;KEEaXMnGv8ctkQ6$`O&}0jLehua&Vl+%;64e!p_wgfv0) zbzFU3$7qP@9RF z=nxYZE2uv}i`-(7J@0tG)lSf4i+FS`-LuDGv=;_p1dS~Q5SqpEyIQPq`b8p76|#!@ zQdi${J~WO+N4C!(KD;};6}&OuB{RF25-p>DDerZFoF>_b{n4$f88$D+bpUf?+o+85 zR4F6i>YEHbQ)fPubP0+ah~dK6Xjpo*5O?T^YkQxH$qLfv0gVR^K+5=T9LZez))%9h zX^Ggu%E*Y9gr|z6%(Wu7)GAxv@qVnVY@r@{73^~hDkbY(y4L4;KRnU83gP%qplNY5 z0eD%8@%mbt5}G0?akf&XcGaXZfVDUlNK%TZbrnjXd!XB-U|!Fp0DsG3O$s=mfKr$_ zGl(RD?qU&in+Up{Xfo7D=VA!y*|Y#XGC0H@Iz-i}x@vxBBn8Kv5#L7lh5hZ1KLiuo zD0RkbcREX)zyFnN^b3fBjlNlI{vsZn{d_J3NWy3y;z)O!G8Lx8NFVOAw5|QJZX9by z`}HLT&1-OF`-SfQ$P7-SB@~Sp15cxwrLFN|)pe=`sSTU z8%<0+UX}T+4#%r&5d~iDF4uBB9&(QC24a$PWM6hL-%Sw~L@a=gjJa}-EQpw7$&tI9 z1u5)~ zX^|z41~hVbm~0u(6cLfmO-sy9)Wa1XLLejX6dViOx0CZBMoc{Uc0v-I?5C0~$Tt(2 za_bfbovm9D;BCK-)^`njr-AQcfH~psF`8qWatXJkU(3es1+cfG1?4}1FBm|So+Zb9 zA0l!(^do?%L%zP;?_hod$*j~K#-S6-Y`I(y02EyYhmDVnz#V8Q@oI#}q5AQc;1Wbi z@(Cmfzl<-QkJUZM)ScL-7hVtW83qlXfETh{r>QbfQKv~Qm3k}IQjt)$RMQNbKg5+S z)jTT1t*Vd_Y^fM}{U+u^OQn8OC)+CZn>zb@)^n6!uTFFB!6AozCD3AFj%DxiW}xq) zf{08pmKaCEgN5_WY*c#(dK=O!I7+n#%eKERy3A)u4mw!o~k1;)V^ zm@Q`u4+69UTTqgWEhLbse|WY)=v-`pgwhs%!La!gTxkm(sVy*qw!qM{1?HQBEeJWY z1>K^(j%|U@K}4n)ON=9Pu?54qyY)-vHJo7!<w6-8du9q!53XF5M zU>NuL7{eBbF>OKU!WN3q-GMErV6h-$3n_T6wm`{eY~lN`6>AqBLX@+GKf^s>8l&`V zLF=w!rC|ui`)cQn@@Oku5w24Zsji zIExa{)Gj>Z@dj%c2n`R~al=4LX$-$-*!&f)G=|R97#KlgVCWeG^X1Cvjsi}5gBCcG49O877YFF*58=d(1$I+ z3}Rbg1Z{z#XA44qPPQOMTEp-t(9GF_q1or730okVv<2Y^TPVVD2ezPsMR&#)Qt%vY zfr9sJp`(QP++`f zQ?MIQ`u^^8u=Gs)y?!uR?#(51l)ew9{Z=ymKSXi9KZyQ=ySgvTcrG|MCCwa|lHSIk z`EOh~CEZJ5o+VK*0#niqJYh0d;gs}Pxn7-loK-*6;yBTv()twcwR%(`D^#uOt5v*7 z`4k*a6vuP&AG|b~OCgrt+;B(fFti816aD{1l=Jt;0{vg$k5vdA@z((zljghtO3(`M zh_g!)V5%A9Pl3|2WGFqh1b|N^T&eU`@=0ss5hI}V3_LzDms5Hij1VgZDx_wIbW+payt4*jf5CCPRKN9V{ct>EQDrmVRXHLnO}A zLPSI}!1gdb$T>g_o}WfryV`}6I3h|{e0Q@Pu7MYE1$-I>Oq?uvtH4jn#&ml*Zui7% z@_Mk6bo-e!NiMZZOXy@cf=aNOz$_lTdrQm9#8SgOkdVh4CG~_2K&sR40jZc^Be>P8 zQh1Gs)@qlU7U*t?RecxC>y^Tv$}ej|h3;4rDs<3pLWRro=x1Lploh{;5>m2I~776QdH0MrQb&)>Kvok&X z!ygFUJ6I(92jAumCxX6%8#n)B==QcC`50XuG)8n^r{Wngh*dy_+ZG=j&;JPB-UfV1 z?_hNRtALEDRR?=G2jp;|40zJH*iYGDso{B;5b_|C;V2}6{!(6=wMQY&Th#!t7UP2z zmgylZ99U>mcJl}3TPu2iCXr7~i0e$Zs-`Ad;M-=^#q49vHf z+JeFUTL1cg>*#u-GbF2a2pq?}I^ql#M^t`99yS{ft@Ec{_t;ImWQ3h9!b>EShmjn@^?B6r=6hdU>TzwF+-n!g8-2PIS5u~o- z#V{O|pH4HT;8^O}c}B|XZTNd~C(}K-ca%;<{2wHDd^Q4dpWwU-&IH0k%FDj)C6fm) zUI<8*PFkppqm5{cV3uR8q`B(}$~eX!7fmmbqf-vuwkmL!F| z8;}ty;m4V@-eO69eA*nV*Q;F^R2nBFx>*uP^;^cUIfN_K4;$#T4T@0e9z#z^%!FbJ zCfe_X=ah)l|5f2C6#d`J;Nq+VaF*iQW{V)IZQ4qqG!eXejmjDD^v(9)!+1l%NeoDD}rE^(QFx)%wsq zQ%<3D8&TT0eUugqEQnEBmY}r2M`?jW>FFs-3yM)%5TmppL1}(%es#JdMd_PBX>6J4 zK?DBMjsOgSZe{#k5VF${CL7v(P68<8W^JGrqrN;rz2>8icgQ5*_dvHCH}Q&d5jSfw z>a_&*g|&s%=|hkcUiknO5GyO*NMjQ~MZE<+=IaRgKOUUsGZ%)pLN|H8FMJV0{=W!U z^Dr`5FivK0QU&`}X^kZ^GzXiat z%lu^L0kV3$BdIN-F;6@KviwwD-+A%CV(U8(4h+V9=M{;#23w#ec0z+eV-cOuLn@6C zgM&enq1Sho6B@L>^P+)4*LPkth&GZ+UmFk+Sy4$2Li>U5CeE=hhPX}Nq_6J<1@AC*Yb15TaC1%$Jq!GkMmD|l?S^nXR(h^H>{ z(@h+b)ZP3ROt-e8u{S1AR}Jn|-!zs)=}g+%irP*(sy2kS}*$eD4#mC(aKX&ivoDxQP87HoJe zq_s*)x(6cEPaj&#fzrtdP@Vpv4ctkELpYggPsnJ(n8;`GVEw0)_(iQdK$fK)azg>8 z!di@{;Nm%nCbaS#{5@T#MtE})9+%t^{n0oUZdZ)^*;;y3TtXHmmDCx~{`D1fY%i)KG6Kmk3kWAIq?bs-^4o zRM#0nU1#X&I`eH;*9|3JrOQFY+csTK;+?Krt~n8s({&@H+b0CNE<#M#MF@1gh>-2; zI+2QXJwdpD-J5o->xN~ok0o@SSW?%8B6Ph7#aVTo80B?c)kvBdT~EPt)^%z`M%U+~ zlVpDVafotjDy zv>&1h?Pwz+a(1){pu8Pzb}-+Ln3ZFO!m1jpv;MozMV>{w~ zY)8DuNv66I2SXu5tF$9KA~$G92QqBpEf?9*lGKhEK|5mT*%9+?*NzM&UY#BBw#|-` zcxOkJYfgmZ?8pe|_6dO-u|Lap0!u{v*>*iqOktOQ4y9tPgIBgP{1azvW*`4 zVYrRHgT5ob-^qs{Vr+N_Y|zEtiP(v+us@$kaX3=6n0EZ5>g%f{ycXa}z-EIdBXY@> z@N_J6hvy`(5VdjA)>4QkIEhlhNz^V*E~7zX4H}3t0?cIKF_XD+%mkLiDyjZes9t!w zh^fmkg|aNX65v(+E#lZy-*11sMC8a#Nhm-%eI?Ug1{ButLmt`~1QP9;BMoOdp(3QS z?_*;4(aGV5$`kpuPH(?i3NF}hhBFIFpTgf8dys#gK6I2;VQTLY>BCbHg?0pU;3e(= zvX__y^I`kT86Y)PT3q?>NA?Dv65z$mfrw&%dA&Ewy~nFZqBW z7IW6abCXi09^m}d*YKQuPd_m$QwAalWq3M+=2LN{SuLkByg(H)0?NR^QwHYBD}ykY z`gd`y-f|w7yH#tCUn`dLR4X>qgCndC3pho!=9lxtF`Rl>p5Pmn#)ql$ZiTd`I%PXC zga&kq^*HLGQ^Moe1P`iJ5h7W&vWlHdh)xJ8_7?D88`s>c#$3%Z96Eg*uyIW|Oha3Y z7u>j3ghQvTZQ|Yjm0H_80)$N9MXHz&JI}%gu53CSxO`Ez*!LCA*>D&E=Cz58Fj?F_d*1|F=hr{zb`_h%MiiK z_bDP%hs{zkI|r(GW58t<^cVS;XCMmxr3Z{@;{OQ#r$Jg+>@S@J?ZxXTrAtuQ zGB~7Fon+p#kiq#G-bS$>(L?M<_z?RM-cLQFn1eY#LS*1aCK)uJi7Wlc3i^?wR5v5w zM;Lg1gt^-M2x|?ZXX9F6J~>CCYJ2=@;Yd{NgCIMISRWioQMGwT@*E_c7zWdfQBx-t z)1CJr!T>&mRXEDwLxjSy2@3QfML6Vrh>=cA3P{g;4y(D-uNj_0H9sWZ%^K-BifYb# z4vD%s3&}ZmVHH>Wis3F)@yTh$a2G`t=iS9~f#fK*vl{7qDk44SCk%s(y1`Ef1H8-Q zeznEhTKDkE4~%b-Hzbl1yXsbKd)+K-<7Th- zqbG}PkMuEybVgZw9MX?Zk?tu*y2qSbPwd>b&o0jBx|+GpYBl%z0>hv}?BcdPGZSvO zEMix$)r=|Km1<+=&aRPB3MY(wsb zyL|wEuMMF)c5TSotqXcfm9vfngdd{07~MmLA7Y3Jd(2&41%>#l+Lxn|$jyV`z3LK% zE+yL)gPvjBj_?*oxfAeoEU9j{tI6`vM7)qe^ZB^4iP(uvgl*nr1Q^f2Ya*Ddt%K=&a_Fe1r*hYCV@pdO3@^+ zN_Hj)WqVLmVYWSphbk&h9Lo$1jc?}^af=E1Q zA9|&FV#5#B3qA2@hMuV62c?>fpsEzroK+QLwev5Age0U^3>yvOR;+V)fA}Ir{Y)+1 zcGIqOX@^=rNfNhf0A3DIi9;HFLTU99lZcZb@e9b#(^+al zMrSeg=gx*X5mA_L!E!D1^d)$3ddk}bOFhJT%7<7_6@h)<C9Zp}jUPIULeqiC867D+JglzKWRN@onn(&~xCOlxS37<9B zgmW%2raFjTN=e_5%xln=FLu+0YUgcUgUW$d(q6`(c@nOCC2g4QgfGNrPcvx%RRROXy;qbt#sOYLmkm#C-@rMANCbS{tR7QvZwc~WpuThR-f zs^Rb19a)yKyH1$duhdq&98s{l-NeTb56)UsvYUBr0?G+4~7ywDtu)BU_`UmpjjDV^!@KlYt+EnfT zA5vViz`~2!tv;vJN3@8DjQXVDSbZ|{7I#4v*h+i)Lq25m=V0j1-=#lOh=Ts`OC^{m zw>Q3C37AtO-X?0KhggmH5UY_QOpSOOL;@73(VP-)f_7LjrxKC0>7K>AkOYYQbOz0> zxYD~|L^v{itgM0&5IF-+U+mV3Nv&wtF!XCoU zwfVkOt87_DC_}3}oS{|3dFB*Dm?~9-abBfzY*bqpkAPH*IFeC|6l`kYkAE%$$3Ba{ zrxWC8Mkh{#&iq3@sf8%$#1oMLI)VK(;Pz_(b2@PrZn2s+bqha`@Ma8d8gIY_hxai} z^e|X9y2>7!_llLwz!6_%3>%F3P;b1+4qQ- zzGe3?)oV@(cbjX%SGj~;o~}yb>|uGMCcX_vmf@AGvl%qc#FejPp;It24e5h@jKHXg zfv2p@)%Hr(oQR;ZDxoQ>Zl$bP7w3bgtO?5Ll&NW}aKzU$FpQIuw6TU&+*rzTN=F{!{w;T0}u#xz7uqwZMZ@ zRNf}eOAoPj@gdf(*W(`FOTo3V23iR{R#MY9-a0^mzRf8i^=(cGsc%d;FfV6XbI?Ds z0Q&bv2F-I=2=s4v>feQG&KLpxW8mo@bG7N;oN%T7F`>tsSn6uJgpUx(_^1@z?xW6y z_;T;pl8}td=ON9{B=d6-1)0P1K<018gOfRL6PfEFmN_3{ne#q~-lFSyy1o_H@Yck` zx9t|NGh(#9aGQz+5yduS-dl2bZrrWe9(55Fg;AUxH!+RMt-;FET z@EDq-&EGKsoM7N_g1Oo_p$e~RAY zgl;Xv-)qCD37-CSmUwpQgVMhX5e54!SB6%v#@i&E@m9*Pkb0>X{On z_`TSqXZ50v4kA7L8jw0oA zE;;RTD7>;wGjmhfBn+m2#T7{YeYnyT8Z-rNAPOQzz!VsGrodb|Qy70+N-WjDp#jw@ z5BVrfhTm(`kDRp#ryd_CSc`C4kl+MsDZ(jhEi(&NJEpWKpKZ&gFQMS-`&p|iSr9?& zN=xoDxL$yElrau?UrHC*ySAe~GH*!EFO%$n!elA5-uh9JqTb?+m}MW*jO_#Q^qANn znPlcSQgG}_O9vbdvhd?8%bx~|uEU@AIF(`^R9N@;s6`3q+LSKAbNuVV4YyyMg1=`6 zR0Gcrs(MHN|6~X6M-a#a=$v*R`d^z*2c>ab%8H zly_^T4lkVC^Z{_h<)8(-TgJy^F^Z`e0R$s2RX&P$RAFNF&2GyRw|VOmR_<^0^?S)C<= zJ)P|=q1)&BRv$$aboOd8q~7{8o}ed}B4~Zm?my1^Pucw^7(|!ps_2Lj;nnb?aaIGf z9Gs}dgn`lo5kZqyknZdIoE$_f&>QZx^+>GeN*v*aKf|E;F&qTd}$p$UKE{@5e`O8R5OBg0cJvs!z2Iik=WJ_Swy z2gpL3KMTP2$h3|Zvw=)-6J%b2E6K!(AS2Th7rv7L5GZBfQOaC-O07nG69jQVgk}y` zbi>Nw7bvOE^En3dVM|L%EDgR90?=fO>Fr*UnuUaK`J->2Y2R(?O`P%!QY{5}6o#(HwAaF4Is_YLmQ7SMXpf4_`O zueZKTKH&2l2wKWT9K);*>HXXwpiJ zm}}yLG|9*c<~2fx$)9>`GZxb#5&o5HZ)phh;fC=5;!$XoEl_tkWk9BQFtV zFI12q&MOuXmK}TQk0+%4StXWw3tPd zx(>6dX6;zFz$X0_7Tx*M3vro?iLw_uYtUYrm(7e-Pb^pmo39 z|B&|&@V?%fG0=Ssq95t1RFUGFj1J)+D=k-!Me<=wT%1xy1Wj705py|@Zw2!@M~_b; zpxr-a(7Xp%YWJSh?tW=EBcR<3Jnd$#ymm*#)m%_YlC|GNne8``mcA0f0?YH2f>U)u z4ocx+2c;l(bU}ntDT;8*Dut`rxgfGD+kUGaQJ+zk6g;=~o9vrKSAK%1HeLB8fY6Bt z8Q{w=2(+Nz`h~$CGWgFKC^m?cG*Wz%(IFbLN=xO$k$l(^m#LHyL6cT$#9U5StYBW} zs4FA_y7DUq&7a~*UD+$u6-Gc;7o)`yaQ|er!C^q!?Y(S$ZHq_(*Nk1CJA~xh3MUn$0 zSCM8ALzRk6#HHA?h$-zR+OBXRh_z>8-~@$kA~B?56Ushf5q|kTqH1=EO_m+A z{$Pbix6*m{RpBwy$-?N`G^dnzaqld z>%ZaI>9uZSz2?J?^_tZ{um6uh^DnqkulJ!|52!XqK(85idd*yUz5cH0^*<2>z5Y7` z582i~4E`^J6FG|wA|;I!-(+-%UPPs(a^grnY>CTM%7~yzD>Y&+r_olh7%|I`Jg3oO zK#$J=XtWq$8coWf(M1f%YcvUoH993K)@Y(ljV9vK=vf4m*JvRKjV1<8M9^qrNR1|x z8eN26UZYjB(`d5nnDtYhMynpFKt`iea8V!d1SrYN@%MC^O62KuXX)io44ZrVH=@w4 zp9SB8IUEklgJ>IIZV8mP(Ldmp*YoWNi;C{Uv%A&G1w6L0fP1-4a?WG3GH7;3nQZ$H z9;n&tsM$YO>5PD8Gw?KRU?fmA9d%m6_c z71H`1&}z57oEYWgq}y0d%CbW_u`^bmwaJMUI`sYu zwL!zez(M|*-crZHpFs&NDu}w2v0K+3TtgV^_Jt~}dwi@RRANn`5?2Vd2<2j-sx%Rw z5o!vKh3b#LP5^soTb@kGzKl%2fOwN>6;Y5WKi3J{dy-h&Pf|^$ybU5=Be8DMu}%=# zCL9-86s=?!^1~%Mg1k`|mrv}W` zrUtCg(L$kzSh=gTNP_``Xuc9G&~+iMAw1*u#Vzc5eC!}@Vn=ZkCy2WUwPJCrG!dB* zcM6Whow4DwAv5k}^5jiE%_8psMCIkZh_sr#c^gE$X5}r2CvQEQymjlzThAu%B#QFp z!;a-m{2=co44Q+uQr`Qf@@53&&A^j4bG6Bv6*^k-^0uhON>JBz2-gs;-}dD#?0S6c zAa7zvc@rndy9l*nd8;%LnUQx2o~yjcr;NP0hGO=;6j4~$Iv&Q29RqOK%SosSo43*5 zU;v{KkKj8rM-~V13^Qora07|w@e~gvj?x(c@i6ej!(46RVTD1oLf4&i-5J*qJ(lgu zKq&P1C_n~8fihslkU>%X#WGN7q9h}O6kI5S#o+IXtj&=bo(wulM_ zt|9sn+n0)}#Wy0D#j1r=SS_VOD5O$UXR%aNnu^ItB?UXF`0XBcTa_@?>H9&FpOMM2 ziA-=(kS7x!-w{NQ0nEvSx4umDY%fhj3hD;1-)diD zTSitlApWnC)n2IB%}3z9^V0Y5KLn9Mv=1UQAK^9)t`mlWwx1f1lNk$z%pS*}xi_wq z*#^q&i7J~BkQoC{X3UkBS;T6m-p=otx7V7;#a4DyYmZ+m+{NjEbhWD<4lGzm@OZs?%_-S*8_qn4aGjB6C3W}hB9uN{WfmM z_wOJav#mlb4(}37Flas=SH4TIAIZn*g@l6X47?9&FbfL7+!D8`;p;*N^T2Dop2GvK zH4&#mRT`!(et>i{i+HR@3hrv$4Jgjti1!J-?~>#@o2jh+hZ%P4u(|SaK z_7?{cJ|mIR&WEW>R;9En)}x*4!lYfo7x4!K+*QZ&xT|gx!{!EDxvOq}>bf;bjG+7( zdK_Rr?5Yz7^z}e-ptGL`e(#UCJC6Znjd5)2TgPv#T>$(`XFeMr{lu5|7>@%oaUI1I z!x6lNLX1xx1exJGd+=Jy%!>xQ8b@j{%=G$>Ex+xjWbg~Y)(`WYs=@BIL?|<#NXK%C zRFQ~dxl)m&;6x$%kL^=P(J*VGdVaSZrJ`pi>110(^Y4Eia-YlQ0Wg*bugBUaqz?B+|Eu|yV zC#ft(K#3XHw;+PW5Iu82iN9=G0VUq(lz3trurLh5yH)wUOv4k6uwSK@pTKL}ha2}r zN7Y{IY8{O7T=h7QX%nmejS6A}&tqb^ZSf(fC9S`!@go-5jqj%_rq&Jn!FRTvz{13Y z@Yh1&A|~T`J{R*QIpfHt*A0c<))P|{aK;f@5`96BP#$o^(DT=#KYzdx>#ff0dL|Za zdTGo$j7PA{l_Rj3DtB4TRoW9Fm>EChP+ zWCqPcaHSp`km>;=pa%>*Jz%cw=>aha?@8S#^+2wKdf;3M7kX7Y^x$x$chy4=4ovlc z5!3^Qo-0xPUFJ%p2XZA&4-R8tkx-a}9vBKZ(Jw^-dhi6N2ZT}&7hvun_3Mvluj=hAZ{pAPV9WDvJ@&0|uTRFjui2^d}hLI7FlhqG#Y5-n(PpAWWbW z&t@(|1v+ssQQ`O%C;cIUI>FHM4Z>wM-|$Qp7Lg&__YJl~%TVZTJ%_mr1?U7iawF64 zlY3$W)q>ggY zcK*mtI2De0&O@Hn?wC3z$onOJwM*<>Tt~mmKEd_48QZAd1+if7;z)+gEx59G zf!@6qi3nxaf}y8}%!FdpE~#swb_rdJ_4{b6QbG;=vv!}U8WoS-XFoypW|t|rtMOAA zTin`;H5$K#drqVuffBzcz6_|z{A&rHy8@ybrb08(SW&=+N&m3XH$wG zkCtq(aajTwTHA8@QjW0;N``TWCVtsQT-Jy)0FGhMd>*bm0|4Whk?H3EE1b0k5Y7N# z;4zH3P!1WEd`sQoR%NyZDCph#Ph46rKvJxK61O1YLwF@nZap7&pm8la%?a8|)}ec1 z2^k%J7Ad^wp>?nJqwC>=h@bTp4%^Br@}LgKvU;Nr>VV0@kr@<5DAj?XXNRILH_}*G z!MXcEB)m?>8E_9cVnWwys|&8$R13P`skctSvA2euJr-<&eEE?ho`>-Pux%m2_{V_R=R3YZ@RD=c6P@hwQHgqy%yKP^r-BjzUwtQ^px%0zEcWOx9g#{Y$S zKqc#FotRei1Ej5o#X~XEe{u~C*GUYTFT#}#*J0HEfQ*Y6frg8L*MVRz*i+kREQnZn zcX$NRT_jA#UodCX)Xnv}H^L1~nTH&jG9h=o=w}3*vLftU_omEluDUn;R; z7tU+0f`1vs-b-CYVt%onc<4hH8O{FJP zGt;eUh-8vS1d6as3zLH57A9_AehT!r;Lj$ZiZK4Mec{yNQ}Fj>NtSu-OGjx0j;2ep z3=!qV3GAQjfsCKTKZss|h`8UTdr5AyOWMFuN1^nUFfP$5;oB+ZaGC&7tTLm|T^ zxHqCObE2yszOAT!=iADOZ_{bi)tR02$@pG63>7Zk*LuB=MW*2RW0C%x#NWWe|KRWG z7^UZZE3%{XC+JwWbnKOgayoVwSoTI_d>UIi*<$N-#G+Mw6@%zBT-^v`N&2PdI&$&< za^zftoSf$6pZEShP8X*cU&U&yP_{AE=_d=oDs7LUor9uUyCr0H;4#noq>xZ zs|ag;mcZ+97}niB*7z)eus#AzbXeod1VvbP$5XT2uET*3M&evAAW-Y#*D2T`;?u}- zhtRvg=ZVW@8Di_Z@$90`!tLk+_wZIc4EBt?#yxswz%R9{mCt=e-sq^dB2sVM$En*- zBlpi$eT?9#+YCK-!F=dAXdKv=d_}&GUys8OvTYLwV;BpiR!xOV6jJ zsD9O3o9~SSQgH00v*Ya>pc!As-?J5JPR1W!4mtG5R+@;yy!@GHB)K>rL}wBo`QEhy z_Jk9o2)h9cJOdh`1oXu%@E2;K=aikZj1XB5Mu@Lv&}`w#5hB!KWO{d1%Lw#57Vx6Vckj>N(h-69OlX2H#G@ac1f9PG@)4t6H&%wQQoJ1auZ zM*K;G4^MZ1p)j;=dE?p8Sh*d;$m z3VeGF{+^u4SLYM23p!fokQ?RJ>lk#lUe92Dx%CExovk-2thCNWh$#fkAsmE0S+Dd0 zW<(#_iHI$zWGxixYWyFM;mma!(!3W5BFGMlM+dV@z?58am_q9K|7zU78Gp{+@&7rL z!2kFaNfGtdn7#?c;)Yr*59hw%K73*)I&RhJ4<{)Xw;D;TpDVfz;JD`?tOQ_VY(+)8 zA;CI)a4U_Zeq+`M$KPdPL+kePLDcfmoei?oNA77r4*FM4kTWDwD;R8_S+c$*`AV05 zA;ac-aHUIsIt}4=a3+WtK~-buSpxGFPA-kYN_~d$2oDEwSUw*RAj`qDBM$G_mqUzj zI7i03_10q&)|wE;&&5_|SIjXamdSfls_62)PK#01?NbGpFRK0mxjU-h@{6eIHdm={ z1lyDuzY#n}1LtIc!=i|{TupIUu-{@>^!iv}##C6GoMM3)(;_T-V=VB^2!{onb#;1| z6oq387?F&x4$y%{hC-i@0>)QD;kPgj#|SvOA{1-G2gIY2aZ*vg(*Z~e$0jW2^acn{c#6w0h=WiF3qhi@Z41jcJ9jW zzb$}Ysb|M~RQ*iV`zx%lTK%pm@lCDnffx%nTjCq;xQTW4v(h!t9}_cLf-gezOHXV7rB zp{O8Y1O&^#vs>oMw_wxPDFZQ&of_|BrzVPgrMXC(oGhZ^N%3!%xp7nH+WdH8rSK^rugSkiyH(cb`8Se>a{9&+8`vV<8__s zfDGfRuR7>DOLgv&%2H+6buLmJ*LAKWUFQnB&J!<5bUiHM86ENap*&dJ=SSHLgFc^U zaKz#ndhoH%z+Q`Z)@P?K!40p(28r=MLTOEgVcG;Fq$j@DKA2<`&-Y1(?-l9ys2q_F z_gh4|bH9~=*!@-p;eJQ)Vv-nNME8P$1@Vb`{A!X_zrd$^fzi!PQBsrz#Y8VKq8Av^ z7=$dOw^w;`ceRDy{9Xz!oZmYee)U}Zy}l_urZ>OWQNpmZ)F*%cK}7XdaGc&K<{&S@ zgYAZTI*iPot#@^|JcYJ&uy>^`9qbd`N2%Mo9ZO>G>cb41AHtQrt7pMe%;1njLfN%q z=&ji@6N>o}J&)Gy4ngZtvn@fyCVU1E!49bgdP{s>qMqQkW$-v)kg8NwSi?*ASft>1 zRdn785M1glUGk~Y0-nc)8L`q;*Cy+EL^iV~O8)eVKOaF@fVd_=fUt|2?v+?I1 z@kh%P?Gp;dAC^S^T*|QdQC!KNXFL87O8zkPW)qmHXf}acrdYerA3kUKqbgMu_>-bcs;%ilL`V%ru)W5fh(Re9rPpRjR6tE~VhSE`8>jRF`hNIngB|>*-Qg z=~6V4c-<8((Pt2ax%4C9`!VF7r{?nt!16=6=O6(LIQetYo&P#=@c$yjGaO$*Ky`W_ z1VO}-GE!{62w44Rmi7Z-Bpc z2~EY(X|yv3EjP~oLWMZ{OIP#>%i%NSG|ax>i_dt|rphDLHL{j7~*sYTrF zb``_s<+u*uc%J97N4CGpX9QLXn+(10t1}-;LI;$cJbZoiK)TwlL453~I{gQ#S9RKE zxyhMfycdzOnZ4FIV#{%%!FVT*BL zf6o{WGbNJoqy_KQuj)Zd(ReP@Wh-7C?}b{UDXp@l5E^1u=JVw#IQe{eW*^omFrw4( z_u5i2-1~lcx%2?^ZGr6j^N4bD-|qr#dqW!7y$Tw?fQY=2)1ZrtoV#8RL9X~e&hJ}6 zG{+?+?G(NMhUR7k*j?8IDi_q;0D^mTiA#V1#I+2YSK~T>0R*O#My5HRgp{8I@Oaz z?j0(h5nRJ%=&7)f>oFD98t#EqVXfiz_tf{oCSGDN)`h8q$0c~mC&KluZ;U}PoG^&H zIZO0ix7AmIBbo^IqP_V-gT~rM;-zg~;_zq~u6x#$*HU|kM=r|4k;@1cjP-E8EL}4@ zi3~X#E*aVmRbx}XFT;M5A&*j*0I^_JB*1gHNfvg{W)_;}Rt?e)Omlw|p24O+ zQ?N4&e?H+8P@gOC_iTdd<=KSa=An6MYxBMgSl%3V)aJ$QUbf9+Npo)Vn0V?R?QNdW zX+R<3HctR)h}Y&3h$8@X{fe$%#nrWWy!F~V6%e<1dSD~KHZOTNwI3?SHZOrBZ5|<8 zf0(v;N?{F(ZnKS#*XAWf72s)Y9#gm~y#lSx%a+}qDqF1=pKbFJBtpN<6Vx0=8w-ED z<2H|4#5V7144XIL$~N!Fw9R7#+dPJz!(hI-wRuEvxYxCLj~3fpn`hYe`q-k)6Smgo z30t&zMc8hy%_Cm17vlZ)+dQEmW@XyE6g=lPj|}(h+i&x3LR4X!_YFkkjeNE?k8Pdb z?q%CNmbCL++C1XIHt#lu&9CFiHt(pk&0_@HJceGI$9y|(^F)xT@Xg48vm|xB71z*H z;n~_eL$0UwP3AJ>(B?faZSxqxHjkmF!a{DlZ5}c3+C1W!Z}Sq|i`%>;I@9J68f%*h z<+2bCoCMfL1V^jQ({tSB@gZ*WlqYWU^l<-<+dN}azb`|yd6XgBJP8nOUXcLj+UBVS z2_VzvrQo@>c~mdYCOS%gM2};k`hmA23gf(U(38VB??m-P?f^{8A6kozD|`|Ur*>J1 zF&OMi%ezYS0z9<7jRcm=n;f6*RUX!d?FHXu(EJvz+*xxpHA_1eBSwH}3_Pu8uEL!) zI_s7Q9HWKat}OoC)H1ZTTI2NXrtupGtwk?27N0+IUQX@tnJWQ&Ha>|7DumWt?@XBzJqLX{#qLD=8!@4 zh@G`=Z>=Q-7p%1a&C*TydwnCy!&_@9mo9^|!}sSfA8;q4obP-!__zQW(M*?uT{uDY z))!-*s`Y&&!HJr<%9rl6nF9+4Fki$Jb>;AT-eewo-kd2_$J_Q`u|{ah4;VD>!j+ox zd}_*KRva+`n!>pozc@II-{qA#=cO6n$9MP zUH@Ot@`YHr=0ofYmB+0Kzb6r)Z`+(h*FY{=ShYcbaR*0YqBJKnbS7ZfBQwVZ5uqGC zGxTg*5_7AnRgRvu3{>S77!HZGdsGEW39x(gvZU{yf(!JUXTF_*zo*~SqKtn37&60w zYtU~@iqa3B4SL}R7gCm}oX-t{L1bC~Hln7XAb9hPN%oTYULOV}rf7=~A%`<6U> z)_=I#f52XVG}$%&!x#OBFY#etE4m}R){nZ*f4DxA?gl^V%l^ZS{=-)?nZC*=u#i-A z;IN8J^i@ismt6n&FV8{hESc2y(~8~AWo5FLh?p>^1G`CKNguUQFO z(XESH;>AJZV7}!=+vcsg%5KMY!j8Nn0K@x)x?=ULy!Ci!XNxH<5jE;Fz-M$xCT){x z8}vxxaOBYgQx|K&yfga-31Un|+_44k)sjV%A@(>`)^ybO>UVP1j@>oxp~G@(xdLf_&$K9)<@4Qw zUDzeH^7n`f?5)f%@7*!K+?%bh+*xTH3B`b#D1$4q+GVNX{)lErxw9**zy)@}Z+Dh9 zqYnOD9XkP?l!mgSp*$JlT?No!sbVs?u!AVBtE~BD$Jjj7OO;!^7T;t`3o&5FmU3s~ z+0tR5Q3oE4=kWRYK}1=O!nCAmK}X{&6ut4_AVUxMQSc&ZY(C6@+8`YmfgxI?4rZ~K z#_d2Y#9~dw^u$VLJ4K#80G@W7`fU)6J-&xqj*3cbU`SPABSMv`=xU&prEgKR@G zIRzP7v+T_0A?q5*ucP!e)P?Wp)jGzy%A>(zIF0gHFto<1=33zBK&`BLdl8bpzLB*Z zr>+HJ>?$L+68;?s^&-Sx|4QG;!p3~)hqQj{2LU;wEHW}>Rb5&ABWuf67WNIItS*&R zMaZ)H+smqSEo=M&baCBjw4>I!rn|=gYu0Z4IwW$IQHBu)XgdXcibd*69u2&~$5)^u z`DZB-)1H$+Xx9Sf%xqmQx1kMM%8?QR@+rv|!o=Qn z6((5r_E3S#B`Py7!;8GAk;~pih-BY&btr7+Am?)Mlzo0}cUA?W5!;;~0O~g1pMu?n z0Kady0nEjL41V8^O!D>vbd`?9m;fV4_z-N;p`36I*4h^Y(TngDO#qE(G4A~5K|D*t z?mQUdTpjunVh2a%m3*vrjV*7y5IX4RScDv=jyPuNI6PoEny;!uBQRDhEkb83tqz+D z^%1-*BwU0{E}fs6$hc<|Rqk3;?+#y?NJ~a2(H|`9fSd;CLbR2Aevd zkBq>8gMp_v%!P8KH#k3KCCIg^?b-yp%MtsrEsXJEti(dnH1Q#+WR9#ldGY!r#wU%L z!qeMn(Oi;v>P{1&xH6*N;XUaNj_F>_>d3QqSrJr>LbN;qw$^gb{e@3!eE0zB&1g)6oXl(@yt z8;?*x-X5qfeUuTKA)vD-APVEuuOlOr=?zpSpnW2srn|8+Wg$`~m(EXZ%A~YZCO>MS zh);{D<(>!d+~sNBEDnqK!eO1np!s54>9Afz#oJ4Y#|Stq2A<+ESDV8kE{0*7;-zRx z@h%2;d|ISfQoOU1n6~&-@nTZ)E>E<;<$1)w<&hYE*N{-UydqNaE|2&oIwfzXvc;gx zp<*dG)u|Pr0YB=_x4}brB42mNV^4QF^sYaeV(89G5CwmCA{1w}nEx^Wf{541#IIW! z@DPCEsfjJJ8KPUs9VEvR;o)A+p!rfCP=<(@*dn6tFMjx?vCSlR3{Z1sBToByf-Y3C|~xyH2iaw||f}(G!-mra9mnCrb$F!`}eKZieD>s4ye{&iftknI|qtt&415M%0aczJPqHJ8d}?5 z>sqpbpJ8xY)sr;gWpF6#@nLDcCYh*J>-Au-JuhkD9cOnRy%M+nasZc+WxC$+7u?-% z^z^je$YM-wu#Eg-s!d(=FoMg-3_ZWWeAt8~zfo}fMS@=t5yAaW(DDhPbzwPzMN6d- zp68)qSUtWlNi#e4$tzkL^=5!!-{)hGHv@=0kH8S>Q28R%XE_2x1&R%sBQR31H3j~7 zW+D8_5dK~}K^Pip&ZI5IgcrbSXuZ?be*-i=<`D0ErdNCiXTM04WjdO zeXFkLGxA1R1?DB}ZJt|rLu0%ZH`uJtMN}b)?*7}E%dmtoqKQ-sKq&kA4864y;n-;l zZrU4oAlCu)auHhqt(vM}6^P}7bVpeVPBxwRGFb)AU>A}v6LQX5UoV$_4kxipGI^%;4y9Z-d ze%_pMla?))i}l#t!{FvmODKZC4?`Tfg@Y+?hIvEYd=4TOYDHR!zL4UDQ7V*VWQs&G zF}{2+gXTMN<@gfK%*gcpDwq-ILox7##9Sx`3uw8;+UoS%6MS6j$nDZm3SWqUem7!SmIgdA}$a!{;$Zx(r zRmAsd%=fBEq=v=WT6!j^3YI8wieG9RDL6I`-!{0{@(cKT{)){S|Y-UtPkWc@eJkS1+SH%wI7A{)&Mo4(4k2SF9}Wuij6X`77SyMJQcAsOyIq z`IQ~}Dg*G4yhnwp;n}o=nH8Ue?>CkuP$TI{3x#USLlY1Oyj*V6wC_Ie#T`5`Q(c7UKtkrk;~-v@*Wmuw!2(ir}k0i2@u+@Kqs6GGE0A z`YMK=afqfJ`YNL3d=+o!#`CjPd$4Py1%r+1LNJGevbGkZT*d*dDcD23h4~Cb5L2~* z{~{;rtoI2O!+3>J-CMkpyg~rCvaB9vUx&S! ze#wMw8JfJHzo+pSOzMvwXeDA;$yd{giv>I_b`0-+kqZs1{#C;7YOK!cs?+xVnpjMZ z4p%q-OddfHlB-pP@QWa%KG<0w#IQ^V+`0k$U(|O>>Jw) zR#eNN*4Mg{Ve`|t4q%W1+(xD^S5=I_A>U1g+ZG>6b>`XV%!iVG#UlH8js#CVKY9u=owM4<526WRVMewFcSfGc?o-)$=eHc)i46^ znNI#}!NFc!opmCt^_mQ872NUk$W&x|cGWs3ex;K}$hunR7Ze@y^lUw` za0eIQ5DJMG2e+_bU%c2PIvH13Buv&B>u(~ub_zv$_$3I_s^B<7??y{V5)R&tPPK|Xbqo-+`IMs9ZJ6)Afk6|y ziZtInMQi(+hE|L~6UM-6Vwnr&*m!xKi%|7JL{x0n;#9*Zh=_9mDjabM6`QgaDm^|b z=)n*bzQ0cd(0wVw!#;?xnjiJxs07l{Jhh4wNtt=-6kIq@4QF3E2!F4?Pp)L~~6SRhV^aLc^G6WlCv?9XYK!Ij&4Om1H1^<4KIA)*G5lKBhNf5k9vKMwp3uIqJ zQhvEYXb^YIn33_}b#h*YJjpT47KyZ(PHw6=0}7)BE1@BlW)`ecaI7#q8h6C57Hb=*B$sn}qH!=^(Q z5G_E8(e7Qaf>5fCU}2wVHn1bU0$WH*S2?4L^N{mT>e>@BN|JTij{6*H5nI|(IQ%4? zAjmwlWzQuZ7|(A#0f^Yf)HJzmJRRo?)`p*#N0|A~#T>||m<%6=>ejjQ$iA?m89vUl z+)9 z#;~xTuwtmS8L3B};enbYVbx)^&MnXKpb??V_T0kJMe(xdn`Wu z1$uxjg6tWuZQwrqrTT>lI@&f7Vo{>EulxLy`s;(`kzv1l)>tdQqZ|Kq!~9q~jjw0V zMKxcmh3Y=HA%bVwCuR58{$T+;a5RoGTNn}gMOb`vIGw<@dD=DXWf^KcHlZUtL(VoU z$mDH8o2oTI_WFXv3jh=(=gcKVyZ}%nMSGQSb^P``yo}z3SAo(9ychT}Xw1wYS5;GR z`anti9w)Sk%|dp7+F zV!KFF$u3sx`JDDt!1=}SIp}VrsK}|*YixhAMKq3rvUx!CO6BZ4kn?RmguI``*z7KZ zLB#9u5gS8#kl`Z)9OqX9{2Y5B&G{$MS@=+uQ|nxE)c((cbTKF!!3Ibon3r0uD-j#k z*S2t#%_WrNZqFC$Kktq5Fzmo^r*mj>KfY4x#d^2ehwnctqh15R%R_sQ`%xsve`Zqu znelaOTGFs9Wx0DbAqC*|W%6JIT@{j@j^oZh$*CR(sM)A`Z7#}Jn??IRn5AEy&96b) z$D!#iXCdWYQ?(v?_XLBw8sw3~JdkU!k|c6}`S?24{`0DaPvvFV=HAEf^X`QdoPSA6 z&+1+Zmu=zoa$mX;o1*mx=R5~V^h+cbn|H}2n#JPk8~>hTpml&!JY+r|zBwAjtt>?{ zWxx665n^h-dG>?XeA9;pwf@%k7&b8hQXas2u&1*5zEy-X0xxnk8G6k(^Pwa)-}8C? z!+~tR=MVPP`gEWr+O!0JYrZ`|+;~^ncqhpuWK2I8$b3NfJ2uGl2KKxj?MOx%WPGi6 z!&?)u-_#{U*9K}a(Oi`@qH8|UHAnRKRFH_S6%$>HiLNC?FRU%BPQNZe!Ax#FFq`1I zp-&=#{_|eB=Y4X|jL%AzDc~o=Kcro=gv`N#!I(_0FBzGGKAD4#Ol;x@ULtd_n9RYL z%)x}rfuJ_vWRVE1Nqknpb}6GR&l>5%yr7ATNeuiFqd2UhT?n70#(_zAXkt>%ki7zx z0@Or!2_jZh|A3Xqi3xqPQY1=kYm2;zi4>en&t&Fj{(;`WfARPF8B~35o}#mKFg~(_ z9xRajKBCai!1QkkQ*GP?uf0HM z*Tz|vGgvy7Gk(mV`2$?JoN*cr@D>ylM2vv_G4Sk=@icLS0dvmazSG`@~t0IzI#y5*wd_hO}Tqj zHQu0+Yf@h0jd)(NCA=~LE5|S-!88$^Q#t%X5-IeXq-xb+%i&P)J}4{0vFl2G5>k(J z+5!0YA_DsPLk5dlKVlF>1co?}s?xfT0Oi6PjJW3)Kp8tSZ&CR9v;!T>QJ++Bu9RLy zf~;jEi7hjdBvr#C$t^QQqI4%O=&K5HrTD5sfCl&e1gF`>biweZ%}zo1c$aKu z@YRwRXO{{-%xPcvF?sd2euDJQ@-X1Ry5Gq3;eC`BBlyxYLvMyjrkDNr-bfTPj+lq9 zDyW>3|C$N1L!_EZrz&eXXv%sI#g9P6iEo5qX5*Ay58S2~`hp9%YA}5K2A=JYo2?sqpyjwZ zZS&bu_mnk7xw+(#rjW;+IyZ5J82$lya%cTxbxR#xe+X|KGnsZMTm=>h+40f;vCa#V zI=>}jV4XVHgEdZkF@dfBOkyiIv(6#G%pMYWubA1#FHzEzy1CN-sTdcovKb;6>hfj@ zPt+$yV+|K3I53ls!xG`Z=@KHa9Y3SuMuI3O>%z9ewG`(39yMWlq0tjJ#!nQu2PyQO z7Yy&e;mU-S&fyic5(@_w#zw(Ii_It&`bM$P8O1%Cqo6Th?Wxcx7Ro4A4=i*&0Z&Pb z#0VVM#`gPFNW$4S88y5=C$M}qcMg3>P3ZQyctLAM9O89&<%avj20c7x!yR+siPs-r zk?^GE^922IIf|PwspA|4`r}28!usQ@2V8gDY5#Uw%M9{sp^Aq2TFl&%?5S^nQ&YE* zU7O?%O|O_}J1jH(-!E2JrfxkOml%*Rv{-|$Vt2+@IjUf5S_LForH7c%7ziT9*fQuA zKNWjsoW@}E1r3ZpD`VgHOEo1?tdYI>x9T_0iaANC!(2JR{|Nra!)cA5r1&ffeu-u( zc|^@){u^6i)Oj4ml#&b@o+D?_g|=k`~|h$#q?)z}MW zP#X;I!a#G}HYxs3)LNm~)232u1L3bYa#bJGXh(;Xv?GRl1_JYh<7}3ELW|6J7BZ#| z+|BWK4C{~o6Vg-rB}L$U1+jx&KCiSwb;a=WPECpbe^huGUd}IAU{~I)dz=aL+f9gIN?HimJTe9>Df7< zXQ@xmQb!M_LSuTC7Sppdre|qF&yv~_tVa-$q~pFQrpa~R#?SdPg(3aH1Tx96t8Gu> zu)tS>eG#uN{^(W%7xwR$4J?ZnTZelRx|aEU>}A%+o;lg|?w1vJu$S3;v&&qsKUGKT zVC%f!mE?w4h_ zZSfJ9A=CyY=0i!3ut@FiXN>Ld@9&BJLNLCTnzTi1kN9`Kk_3hC7IxYI-hQB!Z2&jy zdRti1i?PG-?$yK&TdbkgjNtH&p||5h*cG2?HQI%t)ly{^7JO^Zy?>Wr;e9HCb8v>m zd>;#pfrQ0_pvhr@F;Ec}?o$!fB&;mQfMGbs0k z5*;Hjp~k=yJ9A+|jT?Qix619X;o)w@Ulh%{qCcTo?V<|1bO`0*c@eU1<8S^$ppcHt8Kc9UQFEu!4|>ysdxTkvm*!@no(-jZ`XW0rgIg!v(;KQL%w zqF;hS7i?tuzbb|i5EKJ9-r@E~<|>}~JVy$m%00`R?FA9l4#xix<+nCr#tGI~`)jkDkr=Ow5Pg?#|HxFWQ@&+gEn7}`}I zZEVCA+TT>6LL2*{iqLkS-RVv~yVGs&jo{^L;ugU%Y7$Tnt__LlXs`*vK*8Z^=CG4x z^s{#iVRvVbYfMD(8oEh(jXrt}5g>76!#6e+xwAo1aDiUpyq?lNS)W0D$>`;^U_HLc z0H5(EM8Rh~6+XlIFOL8)2YqBd=;L1)H2;h%9S1aeWcnD1l@ZWK2A)1LSD`+xKTGmp z<<>ykOnmyx278hxR|r2`z*^l>MaHm&n-AJyFt)3EFq!bHol0n&oxVJ&C`?O<6-x>E zKDl#5?e<{%KSVw3;jgIFkq>(~(>WqSX$%ZKV-WGP7y|^ZuK}xI@iX%^;1rxR6PYy{ zuBW{Pf6o_DCK;J;Ks>(33z`27QII*`jsLE=@ecs%;a};_*?;*PZ|H~qjvLp1VIKBh z{>8BQcU;+jc?|{r3zfkL_FouoTa5Q3t^dM&DCr+8QvDakxc3vg_$A8TzAm0M*^43H zKasY(Cw!y$e-U$#{}=OyFUxC2*!XYQbhrKwIUF{4Sst!PyFv+tUvDz>=Awm4xAj)> zHQkliq!F`S<%ue={bQ)mw%?>+x5>}<|6Snc{4CGO7H|Jexx}UK)#CZT5#{XcKJjZC z0KT1Zb1@g4xxrKO!qz}DAKnDR?okl>A3X3)u(Qeb->DczVCI{FXJ^cXa=7B$&y$c2 z1k-zXf=>{!-XQufu8l!>sj2HQstxauJqe|AQ||M%ZE>Hv;Bj9#K^NwwNI@4~>$p!S z6@j70eW8?nWgOhsj%k%A;;>^n<$el|w^(L$z6Rbd$?~84@%Z0S8bKg^X2K;{t zbpC2Ft_(nUUPA0F`)ZjD`)WHGG&^wRzS?uh{##WFBhY>@@MvYOwtcm#@U3kXCc9p3 zyR$0n@hgO1WrZ_%{e{)QsTS3i-SP^~YPYjW6W*EK&MDY&Hr|W=+dn6J(MfEEmwSMh zkC84{5QTlIuNMcp@!+-#>Gl9Li$jwaRfDed+_qK^5&`gJ$VUgcwR!>IcMqAxw}M%E zKdce04SYSs(1j~oo7Yhc)`4UM7{kD`0_G}gZAKqwHTz8sF-gaUV773Mh$!|xZF)ME zfWcLrizIA>M&?|k6rAX5%-6sEJK-y__xK9K17ERk27Vcx8|o&Xy1!j=)xO9q}^GFO{kE&wos@s|60l40Z+MEeB%$9a}Crsw47QRL8*C5Qsec>iG;?(BTh z%@c?YqU8XDUzC$kbIx{C%{hI!*POEme!OD^!{$<4`SFf7Qi0a0AVxsjn+(0?ocU0a znsa@yO3k@GSk>39=DgZ%&H1vo9;025+Vn^~4Y}x0Fetncv$`L_ZeOE7=ZiLZ_G$w@ zrMGb-E{Mg14D(s+hJ5T&E6+@JFEwf;J~d%1xMcy8TaRbK25#(z#;;ZmzYhcCN6nbD zu{*o%9DYE8Iy*;f5__!SdE$u~+6;uKfnlaE7whu6WEqNq=i4p^I9p82mrlz64H=s#?FP zS$mcwJ(KB~EHEKRXwx$TAp$*<5E9$~K|vHU0tzCCfHY1}(dtGJQFg?LAOfPYiMVeF zqEE#Qcl5cEamQVsio3-B_kHJ9)vfB9Wc0m%|9)M!>Tc)UbIv{Y+`Zgf1*i58WE+Gl z@H*PFcD3abgiJoXx&By)Nf0s~7>&JQn=Q=;lQjJs@6d;GcFDFPCz#vB$a2E!ll+`4 zILezqtH(#c{UXuSpTNS?B+EIGtHOYZX<>QUc=b0yt5$d}@)Sf4OO+f0hz-u0zt;H-*Wa$SJw`e{wWZu`PUZKmhR16K z!lD@#X85g#3{;$bi@svzJnfo|=zAc0>K(EAz$vS1Dr0I8{jcR5jvlQG77V}l&bYqNIQC~{S?HGq7x}6z<4IX?mv3HK7Di>kZN9E73$Oqe1H@5T`gc|qr*DlX#X8hx zr>WXd3O6a7n+2qJy2Tbr&E`Ug`{QD(vRH;D>=h1rD8X zLntj?_FDJ#|ESml0|U|Q8&3|iVh{MmhGC{+SI~O8Vh`jOd%!IS8F2L2d9kew6S!Ap zbT2M>5CO7F9$Kjo%Xx~o6ccRkcqRxO%po&zLTR`<7dmhO!yFJ=)W)8J9k!0)i=~cI z`&u07XrgJ1j5BxF9x&G|3EZ-QxgcT)2}zjHTHSZYJT+f#+9JsM>rp$b|1!9EV6hD% zaKW_(5jF)}@Mf$WY{GVkBp3^>FQo*ZfYHk!WB?W(H0XML7)kJ;jpAUrHAit=)l5vk z9jGKjFzK3(@9%urH#KsEFF`SN`1j-o{!Hyn%DIAJOro=PlYCiF<&#Y{hDlm42?ixP zYiHyp;p$ui^pq?hjKy@;_KSU0w#GW($o1p2*`~3Ulu-OGPpmD<1LdgNa2=J=y6jh* zva2?~7Yn5=%K6o%Y?IcV17)i>7`z)Q4UMh&cc@-F<4+MGHR@VBF8Ri&A4~`qC43SM z3^aQx7X}iYf4Rv37Y9RX?JNEctoKFtOA#^5M}vKs1Li8JTDsD(XRs&UX0ZGA`V(M_ zKLvl!US~_`+3OvJzo3P|VfQdrFp3O&eez*!yu(n^QPj0TI0nz=K6nHn+9GEJ(I)Rj zVB&Kye42YB0y`Xx-WPPkX!H`YN@GO_ecY0yZ`zli4OR4XdCgPJFMNTeNx(3Cj#O?H zNF3LqsWL}kgKz@S*TT>yraoMvzwSJgIEva|99^~FzQxg^oxaHd=zYN$9+k=eRd_F= z3HS=FsnJ#II8jxrA)tun;2wFdUx%Sid~aBHCj*xu&``=!#(Z5zgXn7~=j5lgEmhwn z!{`dP>MSl`vQV$~M#OcP)4=Xo`#dm*l!jTIu)y-QL6kUOp9+r$6~?<}K8E#L)sC5i zs~A1SNGv2ZhUpQNhhj2sT0e2Pte<_+oFqP6kTQ9%)E=W}OE09xuwXRCsI{aXREuXG zB3bRmM_K*m%zCn^@Ezpt(ebF9ylU&?3=B+V6%FL|tp;*J=|o*am}_3yz@&sS|Cumb z4#Q=CWd?^rv@(N3A>PUi)@Tle>`S*%#gjuJ5a#N(HpwFcVAD6~dMh)S4moLMhK544 zGDAZlT5TBq4R)I(3)eDep$2yKX@m`(rb6^jDF_zUlSQMD^hoV{|A;u~Q-@vWbr&ML zs7i8*($0T@ddQc&iDR;o5GAfu*foM+rUj+;9Kj|}QmnBlI>xPkPr8~h{N{+;=VZLH zf1)`JTWw+#?`vY9BceFg^W$W(=&ET3@Gu{`p7AP*_o+ETjuz0(9duJ41qrfr@xPtQ zMBg=$EYj8gW}K~~{S#O<#YmNS8CLZq^UgL0pE2#jf|ThV)dZ8Uz=hsZ$Dz@?)BX!rorW|Ak_hI&jSet)_7dJggFx&z( zMYpjZo&%T=#7@WRwgy1p{x5iOPLQs5J`~d-r=K&+B5obD^P!5|;LI({Iv=VJ?qd<5 zAMR>K#3@fY9cuDK^u}v5v;hohE_AV1ankh!iNAewvzGMR}5Z&!V$3)YyDsNxqQD#|W9b!nS zsPnL}Ioy@E!s*{=Cha*JI0YAdax_jU{7J34TjJ8o-{Ere=NX7T@Q$E zG?CFq7il;Vc@wMuprGkW%(cRfW$fJ>%Z7ZGVXd%O_F>sZVj0#7=do-kVj0#7JCEI>#V^+5FbcZx!Kj;|m^_rbw8G1;{*azz0vRS)XtC|z#QzHLjY z7zkt{RDQC(S;Kn}@;QZxkEmX-21I)R32>@6){VZ_kS-h<7>UTpp0$y2#3$p3Bjef1 zL}VPvC*w#&#*vteSewkn(vFN}N5*m_`DK%Q>cZ*^T%k=7TFDXuX^Ug7um+)siZNEk zcA3m6dvA!zRKHdO4Oq_9Gq`+UxgBoIrOo$JRoeOHMvkRT40T7U5-Xdpf~w@ALHZ72 zWiwrGtqv0*8?A6$Hh{IwTGF{}a7k$i7iaCtzNRvk?k(-=EzU~3^VjNp746Zt((NbP zD{rk%QTOLesQo+;K{mg65Z+v?z*bPL0@ug5R)KSyj2vKB?Iya74R{Vs3 zGl08l>3XdK(;+9e3abW+E+E_p-v%bx+ryPGjW9cscf2%iM+@)~Syu~<)5TzaDKY9CB! z?^qte5S*+)!{4%WUQNZd4=|Exri;^?n~aZncguqy8a94;2wuC3(_1wW$H5^KRVgQ#4()Ie5OoyD*x72}O>RY-4zpxC?`j#va-qp86zfXNjw3CHB+`oFF zD*>sADX$h9R-b7R94o{XQPKKF%pV8FiZkQ9fi%McTtMN{$D}v@`o7GnX&m_9@uZy3 z6KG?dpe0g^#5h4KsY{7>UR|06xqgbjSC`17R9*TZ!f|~h`Z7l#2zBX=;@s2lfy*xO z+}hWzF8AbO1<;G*Jvd(7n+{zInWPVH^3*d)9)w5B=NWoFQ_o}Y^ktGMm$>rtJ@jM} zxIrcfwLid_T1~#;woW~To^|W7*eVkz2nnqF#HPXg-(eSVCySjFkAe0{q7HfUSRrYE ziCq02Xe77vmNf~3gtid%UN+};h8~%~g{Yh9HlB(n7oq}8bsH24D8T@(Kcwrm=uC%Y zjB3%f5LGR@F3PYK=0187T9MHACDOPB7#T%W{@>9o(lQyE&0@U4GUhX}(0x>F>?H~J zP}5+{mNw|Cm)qtBQB0J==7ywZB;HZYNbkG43v%`Tblo7eQ+0!J)~IewBM5clUNt4h z;Ufr-kFh6qRLb-T!V~m-ww@OAIeI@)&y)0gE}nh`V9JPGeD^DWojy%pfADFJm4w6- zD+y1g(|8u1TuHc<((_|U4+F50kd8O<#8kN}38!p@4S^e@j4{c#1iifGxjs2eyQbq{ zh3r@}+S9YLs9bgxi8y|VwNV`j^+lj&2m0W6MNsnf<$Xm0?Ed2Ge&9py|>5!8Kurvy-zONgF#=tX%bbEL&FbA;u;Bo+~zh)L+ zjHqFlXqv9>F1x!rA9Z#=9O@j4GSqu~)UnD$sBe>`3U#b9$wR#-LcPcJH@kTF9Vg!N zQHMV}?UNhW#ZE}QlM?t$5@*yE)!yNS zR(fNjZ3XTLTPt}w4MEVEmw-qRDJ<$o>vcN(w1x|}+LflYkM*wzz?fcv3;y}9!7Pko zJ`ZAs5VubCuaiBvcsUXV7W908cJ}y@rDJdF9Ih z3>?z&rrnte`P__rlB<=8tUH{(hKn^Lq*x8g8;(dkY&bwgVexl9U2m)<* zx9lRx=L|feOB47Ws!H~+#WWH>>u-(g;~Y!*nIo3+Z=ut85uRMie=X@$5&#BZDL);r zJ~CBiDSvg$K-$x17ZGv3yv)Q6=qA`Mn82A_{2Z>|mssFzp=5z`CA}!?X=Z`6|EEHlW12Rj!W&g*bWO>044T z#k*4wzQ1_)Vg!MA+ynGCiQr4&QNLwp3}P}c=v+FDm*7bTp%Yl$)-MJz01TqzF^H)$ z3<^R5R9mD)`=bjdaB36%D%fy=k+C?qaTrXg?d6rICpN_YHBGQ8{2Xe`@8LXk*HI#O z$fkH_w{0X6*2U(_kh{YghAx@~?U17{tXw)CkA!mTy$RaOpzKuo)Lw?fJ8BM7V^wQF zpjw(gB%sHi_QD~UjX6O4c{zgI*$pRyKiElB;MoX2!yf|;4TRR$fLYBZ-hzRs7Hr?8y2~)zH6F}7b(Lh2ar~5w>Gz9Ux1?Ib zrov&U=@m?GrNdAYTE6PGUyy(y131(~*JHYhm%l5OSWW%|6vjaqS1S)9=WMCCEN+%F z`A%jzMI|eY%}Bprb?wtmTFD~K=!!>n(4ZBg$7d3ZNihird^jd?$#Nc-GKZ`CWVF6i zjHJd1|1B=@#vmNn`|oneJK};PWjjXJnkSbyT6f_-A6){!rFa&RNBIIN|z(>!Rm7q(N!XT3<<&u z@f_a13r-_i>|dh9BNcwhib}=vE4;WB2r2>Qnl5HyD+1=4ZekI(i(m}kToYaI9wn8b zX!j`T(&NK9zphhkxauP8z`zyELcIM3z?v5^`;gC4=axU2!`WECCSv)I?Rv%Ct)3Y|+P4z-Z_hjL2e9R)~bVx=khrNL2vDorTBDh-YT%qxvM zn!7zZ3lODQ6qFV}OI>O0NZB~DmVE>vGu%45 zZURdi7-SwZhj8KKdXzCs2rODrJZ%*80$pxN?v!H7%#WppwSGSo5e{NcXlxOq9a=+< zXUwdEorRqxKdu_IQeXW+*jxj+#_A~W8aC|nk; z4iEfZ1;Jt$zaJHQ67Ftj#psVEQiT!dp3$^^qB3Z!6fKiwsJb7=?B}HP(XDXPf$hTfP?)#& z>bDdzwraRBubB3j7RURGGe1~SID1*;hZs*7+tVVMU;QQU8tfs>OZZBWhn)KlXO(6BJm33kBwdAJN0<7I>*%!TZ~+6j$Z#QFu%01YgqN{bn5>K+ zX&6d0bzjfrPy)`65<2yqr%LT=K)_|DOnmRsY5Z4Lrjj_ zoQ(_Z@n+3})#2pZG}U^OKYIJhiZ-m8G1{!sep3T(ISF@QEK zU9TBqI^?8gOg8MntiZBi$Iz>>poM4Po3V17; z3!effxVsNq*!wD@>~D3J`k*4eD^KW{oFvqyA3K*m@wDwlEYfJtjd>-01UqdUQGTIUKTFn% ziRYUrpf$0bAZznbnb>5RD6Xv#!89QSt@b+Yrp$4p#P5qLS|QY zv25Z1y`t{E>Za->y8D9=6zlFM-d&Z&@J+9c`z4y)-{bG;71rvu%8;UBZCqR7Oi0x_ z>6L2`1icbsJor&*;%ng%9)%h&Syfnd<_jdU7s zz>|ZHZ>5TPSTGp?qm7O?ddyTU(`|$pgv3NQv!W@pA;Y;a(Y?o-`?7(1p@M;X4;KvF z6PMW&f{?x(xX;6+-6sAVhEo0-6;_Ta6-I@VF`2|WXH4b*&>yo9K95KiPxp5ghQY)2 z;?ea8LZ1iU+E3U(!lrDI8xWv6J+)i%ZS5F?{H{*&?R9nN8H6|DS$|hz>T%VPOg%0i zah3`@JVb-5j&7pccoUvnb@Vo}@hpL70H+Pgs;17ri+GxQpH#0eT$)dW`_j z0Rf=&v>!`=C0?ohSc$irW$|sPA4C3riNB}wD4*UOOGn|wu%!-EeR?y3%$9l!-h5js z`BtmA#Mx5x_H8NlN@Yt?Xgphr8S|`>x6y6fj3>_;xrH_4@2I^&$N&!9)AejArbAA$ zrF7QF!L+4x)(CAWf|uUPFese9vB!F^|L;ET)8`8C3;q1HwQ5_6ihC0PUMHgK0v{9>^&Ubh?pu1sq&Mj^=Ul?FO&I={TS#9ID1Z!@bNMjdudeLG|? zwiaYKE{F_A9&fxS3J99$e;^CH0EXi#c<7QIe63$M!ps)HWL!w^A$~b?)vz%$?S>pP zEx{@>)9B-wX-R}R%rrrm%M|s^v^b}^%(OT{yf-`Xk(u^Bl-?(Qu9+r$oMC!rVy3;> znQ2LuGSi-GgvXw;l$n-^wcg07xM?%(5SeL$2{SF7%$aGV=2ogR zE*cC%2A~C?<7qRd%AcWu=}*Yk51i$VIi|bl>8s)7TT;KS|*XXT9_IWH+j>8t8Hi6xjNEWDQ;)O?jacnmT@%_JKj|Zr(vUm~deD`!;7t)0bo4 zbUl+^qLDs+Sd*JN_gOhAr_{O6iFY)LlCDb+K@{2kdv%GT>eVJAzCMY4QDA{ivOkE7^NwapzlB?{@G(> zh|V5kJ^BlX<<{vF7%k?z=r%AID2w@aR-kt%BL>i7rt6(O#&pQ(uOxfs!05~glZJ~V zw&;fLiCju-3KZ_;Lvu7eZ)WRVZ?l%853G%uww0QN-c(Lh*EPBM5~e z79QoH*lPw=9}ll5j<{(UJA^n^OYr_Qae^ybCBH1vKg*r|NurtlNxm6v`ONjv{Z$bR z`M68e;>fO!FJ~R6XFjjIs}VWOZiHCi69Q`{M2M3hnvM`yGm%FKcQs;Pd^KVp$H;gP zHsNQB>r@zn>hDeT01sc29^eFkI@ETCm0`B9i4J5WMVJ71JEiEes60W)08RkV^;ChR zXrc9~G5o)hXISlk9^N5n98fl>13o=4R3LgBC8!b%>}=1YhaG~3;{@C(Xb=qSZ2wQ` z;hpKlyXg$GL7yHt(@XUDuqG!(51i?hM~}>zUOS)%j}&tig;z`&)WtqM7CU-u5>(M+ zaXvj3tD>wLSZwvg9YGWeted|}zO6zZz447unmen|-YHzXI?C`Y`*`9MF7fS+P`OTy zaSB%+-`pu&eeo$=eLRILs%-xsD)i+o6`DT(S%u~XbusK<+;$ODV#KEecBqRIS3yxa zN??b29wkO1)rKAFPPJi&`hP0HyxvPS8mRTes4ekD825WggdYLRU6scDUU?$C#HuuI z_u5&N<{tHkBE2!#r9MTlNnI4N;V#KA_NnJlWT}&3Y*QyesyKWm5!gI+y>;}siT!pS zX#)>^WKNa6Xs_A5EIZA4q{$B93}9&)m|Jf9QG9VeC>Cp;?5p-47NJli7K zalEw2tB21c*;;IrCMPr=mTVE=!E$2Q^K%%MFapC(I>A61NwyhIFu+iayY?dSju!R$ z<4v8gC;RdDY))Et-gr}cVF-G6qioK1BM5t3xDXFVk-Q&Ya6V`bmN?;P_?68M(+$zy zI-`jqi^KgA4=UZhYC8_g!&H*I*<0|94k81x+aQ+&&{GX0@9&7gmyz^K)&Y;)M*T?vN zLp<9Kr?ewveBEgf(;8O~7Dw0HR-Utw_6T_V10lELU&O!(ck|RhtU^+}ZW}dOgq~j) ze0f-1XZOhFzUl$M(nX(ZMa%Spw z`VKeA9zv~M9H-oU?en^q%m;(-qEKB(ymfSZ?Qva5!BnFqwvK|!I?(OPH6>IRwq_N$CkY(f9KqA)y zkc&w$I>8je@~5~G6RV;UInWT(v8W#$gJdVi`&Bm6B%IrGbugSb{Hb*+k zZgcccCXZl;ieI(Q`@c0>d#$3chha4Ypq>CchW+BM6$;Kj8`=1I;F`aGE9e@ zKF1D{wlyBiPK>rSj-Qc5%Kv7q#z9gz=`BIrn!x1SY`Fdjj8D)rF`lSC(>~d3TGdkR zbexW7JC0OX6*9HsDDjTeX=;ze521p7j=!f*NvD)Py%bi_Ch60UAPD-@mgC=xkEEa3 z2f?`yK0%oHv*`UrNCB4eMrdcunQ^y|10p0&=u=`hnE@~IZA=$Vw$LW9|ePI z=w%SHBzF;;qfH+L*s){%APtZ{kpqwzm}W54aXMkC(@rA|LLy!2+?+)oAZ_50n(vAD z@^hekb2>fAQ{%Ls1opnC(C8?3V=_HksM=3W)AZFI;)|b3mFMLtFDoh*D3{kf)0Nj1 z%ui^Nmf*xxr7m~sYV7S68oGjaMFl4rdbi;WH|%=x%4LvIi~oJd?K_5yV+;~`@oV#3 z>t!f>Trcx6x{Z7AdJiifjm>DLu+E2s`ooFWmHvP5lLgU$udn%%eh9h}CPm@Ty3=;3I$^-CSogRmK zChF($_k%{7<;hl@W&B^I(#Kb7KER`mpzlJ9E6{g@2B`|d|J=X z;8|Y|198v3=KXl@?&}`izHzJQ&OCeuMq}Dq0pO`)LJqJ30HYJg_rLHQzzTr7$iVj~ zBL;9009}uPOowe|RL6Y-E}*-=ICY@LrU_l++Ug?ID)M9j#xPdQKou+qiFFXNG}CUp zj%70cEyJ7(hheI{{K8ZCVTx=4?cY!d_lfn#IwGe(fvz!7u_cobPsL31c`@wx7{zwG4Xs@ zK)__dm+3Y>k0)91PO`w}Cm28$(Dhirba^b;0BR5Q&cc==x?>|&7)Np9I~)<4A2Ef6 zhQNcuiJT|iv7ATyW4$}9h_xr%Z3Ujc3VRrI{R)CGzkEm#ehqIpB?%2Xb}Ie}l7r#g zP8%v_K{QmnK|9i!h9r5AZsV(Xk|gf}NoHRVg!Cmn=z8PCOoVJSPTWD6Jen3lM}HBc z#E$_qmQ>qHmAi7qw$h}eiMK0hRL<928SeuoDqcA|3&)_2KT+lUI)WfSTtJQGLs|ne z)ciI)apyLkz8HNI-93xMr=L^}Uk7## zR-Y7v7TvCBVJ>!62^uDT6y5DCjFioxm|VuTsa6arxl^rh zkktwV^uyg9?$j62C`aWO1d(UXO4d%c5^RZ9LW*EN@W}Eq%fZO}+nF}i%kvT(QMDFv6 zjOG3!^4G;K5g9AT@`#M3p+;n!@al-n{fn3aa76AAk;j(hOQp_AkBE~czGyh%Xy?m0 z12$K88S3jUZoytn)xdsE6sstblTv?W4}_RDPrSP-xQsU2rtXfqR!O(16t%Vr){B}x zMseLa3F>+uOLpJdITl606Nk!beGT&c<3%%66h$G zcz0EB4PMXcNOyhV!B}?@=e7!lA|hI`&--N2>W2t|?y_Sve~b?uw>P$b5dH)oxYZs{ zBOL{IczW$}-_PtW#@vd%g4JEheXs;3FOWbqh5)sBWQ_(*c+M;#k$kbR)1IgP_LcX|Ozd9yUDv3@l;X zRkN?U{#)n>jnwtuiFY*n>f0Ngpl3h+p1r|>cyq69g(o2#dnVB?K8zsHe5*?LbA0HK zm(hW>y_I92-L`DQ{v;gHmW1>pWOFuzs{(a&K;=W&EI5uGAxu#APi-Kj??L+)9|zzr zdPh7A82o}x<7aqsIm7!%@LPov1F)Qdj<-3SSYtWEeQdq)Vj;ZfeY_pi!#Fd+j}F!k zL!)6IjZ?IiK;OOKr~NYs4h zMi^*0gix@(|3U%P$-@EFNjN+&#(~u-4~hIU@uu#RSj5Ef4y>S`JFp@Sp5wp@h0j4o zT{Z0r!TD}0M3-L(SQRS7n}rLJr&Ww`L(Vx*b#EDqbwKhkad51wp0KY$uBdm8Ry$2S{Jx?X)? zA~c-RG-^1>MmC&Nzks5O9yd!p`bj9wVbp?Md{36f`wJoj;a~Oq8=iGEy`3Q7-|6FG zQURtCDc7^9CO=Bu!??4jV0=RUUTj7&Uu%~+tmVF`Z|nC-$ubpeTRM{TkXNeu-`MKh zUjG)B!p%C|Eikm~34L=j0Tr@fb=Vi3ywOT1$p>~wXYaQ6!TNH(&@t_!{Tq*lj5;5p zp3F*>`_auQ4|dengQ8lU7NcnKRVcSFSwZWNUfbf;QdlI67hZ>EW{`tZ4^!;8w&!Qm z!#31Ru5obcpL834!jpqjAEY8)DqI=B!6~}lfm2L}oS>|E7zs|lK9rJ|97q7U;cm<> z9ifMD)Gj;t9EVKnBszBNV%m7cNo}>nU9XP2Yq-Ci@k`F#DW|w&NvuJwNg#U0s0qdIWKr)LPolF&DsC1KesMgCfkuno4ns?FGPwo(HEs~)#O}v;xu0&Rz zDT^Qrfx?3?yM~Ae zjV{okaSq$0R?R+Vjs&jdis|WEuH-vzxoQ`4KBB~amrA6PluF*nN8%li@od5&9Q+-P z{{;RQ;C~AKyMg?0c>Zx=Z@Ao9yvFm#@~gsq(1iEn@99=nK5yKlz3>(A@i6Ju?Fd3Y z?L|&dKQWt&@0u}N;(sdCLN<<`pG)x@1UQMq9^-Oc6}YYXU0qlvC3v?_F~ z(d3TKQfpP4iP-gbnBth=)#j{x_yMQ@*HKw04%Mfv)vZ+a8{D3TF!JMRx|(1hf0Ip zK_#mMwdg}dCrnU(fiedn!J!kD2er)>w4e*NQmX|;i%U@U$wxsxqs2`79=T;t_5s=% zTS5ahg>YQyQB#D+NiiO*DS3#bw*neq#|omu6EJ#m=&vq|NMUCu7!Dmi4(PH7hi#An zqXoMxc{pUx;VhyclYx?n8@tUx2dWN-1CJjt96Eg*a73kWm`-rOZ~K!jD;A;J}%hDb^rQH6zwtzstvti^eVbQvO8#GXjT%wcl?rVfK}|1Y$5^}0+*E$5PpKL3#M{k)`+DOGsBjPB@97Oz z$khDzkFlQU5$TOy1VL|LjdlU!CWSBIet20%a1@$>^zwde;z4Z;O@=2VM}f)LoE4;BhS zV1J^*5FQjn9@wmcScs^T7zGBhD)(vm<<9B`VF2Ag5U%9V4MO3h7zOHvJRGvR!HP~y za*CeS2nM;shYXD%$Ug%&jpoz{d62UjK}BxNQRIvoFuHrJ@+0nVy{ zMJVhTntLlczw(NnssDySO59NYg~6}IK|*Hz&%+>F{|PyK4ODT2ggh>T2RGqjO$A>| z-J>gSsBM;(Ba)NsAv;NV)f{AFf6FN?>JCFXC9LRg3F!k8q|x8XL%L{63%#wCYR+~{ zE^ak-kh$R7AoutT!&Xy4#`r-bDcEY72f4=}V|Q`_d4A;L`MUEZ?ur|Nutd5(sMdMD z$&N!ZBLx%ZNe+9zjuc!|Zlvh-Nr6owBE|azS&}n{rs_3PV2jAVM~V|1mh&Ooh8xf} z^szT0RHaL?vf>t)WV3^5@0_;b-B7k4!ryBfsEl3PFtO#B-a_a3gYa3sTU#CdvQE0N zo;x+)-&Vi?cL7t+7}F^uk{ka$7KGs_7!M%`!VwbM>`T4|;SzcrrSo;KpWA?BerO<; z(P<3h$p!*ed3D<+Wy=7NosQQ)FjY$fVPKacsD4Rz)^5!-5CU8D!J>f>*ayUJ!b1a* z2R7S4sNhd;DQD6kYzR0kD~M; zlJjkZ^FY&!@b~0^G*8(GxbLd)XYqPDf*h|;232P9KUPfH4FQhVqkKJ{hr)$HNdKAZ z^3`6(Fks%``wBXZUGXH}KT5t+)`E}$;5!|U?@X29d+m@IrI|bPL1%a`&_y3KcrVZg z#Gt|ZJkVL*v%t7L9nU-+!|t%tF_Zwog#>tIh6D)k$0T$Npb+FiP78sN+UX5Lg3nN` z6P74Oty9P7fzUAuvX*RzaaX#y!_BQ|+8}6JLnO4tBFri!`X=$t(Kr7fAt6VeoRP;V zIU9j7g26)Ql-&`8apE2%2*N$^;be=iA#_Lk7&ckxgXMFtSl`#a7VDzu?}aXzR=Zq# zkyxojR`N`|-Y!R@uF>@<_PiqQKHrFJe&&_qiY;ON= zBW`dxdh*x2JQh*km(q#~g>4$!n<}>oj1}ccg-X1wLiu|8C#V{~O4lb6ELESr529Ip zT7@9gCmYbH;KS7?zB--3*C3P!>r|#T%qt>m!@MGn|GN=`@UcK|bi7{OnFz6@5TVs{ z8hhc%IpdE}gzR)h20(=9cp}79Eh6;)rzkrmx9mEJh03Brq{Jfe&e5~)0MFT8dU}>r zNXZ5Ju2>`pJqvPDF1SJ!!^Y26B||NZ#DlL6U%ui7bb927$GjpQ1g={)69kcrB+j7? zh#Xjn1-@YA7@lP1$H~f*geU{RN;)1ZnW}}Ad&5&UNqNJqYFOumFuNLtFw>77lp}qK zO=s%`gfm)n4{5aMLi#QNW&m6CJgl=V`n-^gsJc@=Nv>ol3Q18kWhf@zIdb(Yko*s6 zxgtwaa)lWkCs%6_1i5;R$<-RMYc2eo+Tp9im#;x6kBnTc0`)EQaZI^WaUo2I%YJkk z`{GG)`7er#^}rbbaiQah3sbd-%e?Sg=kQZ~a7B16H0PQZ*+(56L^o6(33wtcc5Iwb zhO~G%Lt2RQ?Abv`Uy4c|##vFxkWp<;)GrVeQ6$Cg#M`kuHLw3l@C>8Qz8)b>Q~W*> zdIZx7&?EaJ2>f1w1kfX25Wj2ibNrsfE7tbRd-wu;Yhu!s|dZo+-_b z#-;ecoz-~Nod@In_ED|?8BX>nh1qX>bsiL*zGwuddz7LxuZVlhH{!W2VwWd};wG&a zuQ$OH?MMtP2%DnQH~>#B2>S#Dais{u0Q4s4c!J1Ou!?R*eq0W=QiC`1Dg*^l5lIF2 zDnXpF4^I$dl#?MslSJW+bxt1A7$PLnltlV+d@v8??D$}YE0H9s;~*#^Nvh+Jc(>X) zSS4M+!d71nNz#-YV&basH_72T1VIk}N2>Nfd^iEzfY%^A2+zuD$PpxufldYS)p_K| z(Yzv3j^-7Sa>R%OyJRZEJmiXngIsN-(^$_;AXlHHTwSN~G5~T#$CE3jYLTmX;Yzt; zM2|KRH`R;?A0d*`D~WfWUU@Ef^#c4o`-DYF@$=g#&X2^;O$frA_K89Gc)U4g@)h?W z>xpSjyg!M7FxTdqnOv{U5X=k%3{R%hI2cb3Fno$4{zBZnjc<%D(D8`JB$?3#L&cs_ z{YH~vt;ZG!kJ702Y0KsHp<@5K4hNn~^nYY97FB3qXM3 z#cUyQRY3ev|0+tEo`&~r3yv)b2iO(_;z|wMf=F<5k-oGo@=!?I7LgU9{6xJ}ZBM*g zb@!{lE@)K0u9Ny6zdH&zf7sRaqY%{7xe9CI&cVgq_z15?vE8ju`X(7%5G?>4)F5vv z?cwPRMPvLqsG;17EzPf_-*gAwg_KS*UhK{^h%2Yb+M~mb8xo=Lz z!Xo{=SR-*P7jAY)YO@F~+Eu{9y%Hf8E%7ZkuZUxmn;he?*uxrwduZ0w zq&OiK`066@bqzA1ud}HjRfDK5| zIrwCGO7`|dxV1CSL=fzT4-^};p?R}a~_$)mY95SFj1g#Jy zHE-s#Im$taLwZeHMtU#ri$m0zp=YGEXfbQPh$F=J*>oDm;7RfQEbH^hK}cW7E*(#H znIt2-xFi~$<@JxlPAbO@Wvm>1ZX~{r8zA~3Qn;(|$G^w=n|P#X+5}C1qPF`v2tvEX zJ0ZEDBM47|$Bv3=V}MMCVxCH;aUz~9=I2;T$u8VR3@?gX_ykb(fC?@?&$9onnUcnzmd+ zrkcEoRWh`U`3$dxPVtQ8mdavM#6m!dUPPyH8lIG*&r^!Hu_y=`04bv5NfA?Jr6?q> z{Q>qT8m1}|zYWbQ`lLj|uwdnb^&u%SK-|&3U+`n`Q@j zJGUPMBG-viFTtYasL2)_l|I#EC*F~sUCw%~6DbQAsw$vO^ks$QOUX(*=4t*ZS(!l) zY&0xi(cwM+g8OYGJ_p(vQt>i`!g)EJ@EklHH(x9dKIh3zf&n)}I*l!OlABnVRNclE zjX}r&aFdS5O{Qw$=1bsd+~gZBhIQZ5O}&27(hPe zVU^*d0S&@)kt7Hc#DWHCS6|MWBVtB@{Mg)7L@PoN(#r}FgiJO07BC~qct^BOh5~F2 zqZO>fFBpabRImj}!7v(-SFr48z)r}G%0s+WdFG;fyryV_u7)!7I(_u8rikdV@`&hI zP?U#Tc0rLKyUIg~ojA3{Dv!3q2#$m;b!T$oZI#E@vtNZUehYt3&r(>uy3Uop?2!MiWogi7&8DV73E{X8`I19j{I>Rklu) zo3Df~v^xRgHd{T<*Yg5A>$_9@Tom)>$L6NqgOG7>A0VF7&E#Dyouedib9qoeb*PdQ z{gR-$R7vb0BNhQIW?o6MEhe!juV15MGA_jX6DyHYAS@s1jBU#@-$hW;LZPp-&tPpgeCEwU;9n+%^@qV zLr{yXTnA6c#2e@Y;p^dO>a2OK`M=Tpuc4#RAXL;);SC1Y_oA#QpD2(Yo1;7xGo;tF zz)7yxe4@wmxU8E$U-Z?=Qw=35a2=go9*EfE|O=bO#{ZRStpEHnreHB@-` z7Wy|BslJ**t=yt0{Ma1jZ1L$e-L!Y6ntW?a6QjUfLY-+8MTVkJ1~iHyLy5%_8PF)^ zks;eCvN#YjUUy-*s%Yk8s8XvNob1 zJHaN&PMkW^>@dw4362CIHD{D~x7uN6LQuBg@3of{Bu}n8b=8H*^{oi<;yNXe z_;v*Na(xHBom}fRl52kKT&@WQa{W#^joa{~Tx0iMbsO&L12hIeuIYGk%~V;rMk31f zI}ilt?Q}e3n|GT3UFJ{ZEHnreHB@+m!SyjpwDO4p`LQ|5Q!zt&OGHz_ADt zO$;f~^rb}S;g^+YL3R>NlASm;<4LsONCZ+6op|TjfTu!8UYM3?3Xvz%9fcP{Fl_AY zT?j(Eem-;$#&Fmz55o7r&rO@~HGC`7@)QqRv!KvMfEA>nU1)42IR-+KHj*MP}@@}$Pv67PsjsdW>R;K4@xJ>5f+czkLvU;(S+ z(}xh0@M#SGL3lUIYRl&N>hnq8#wWc-d{UB~@`=E}r;pNUd>Bvi>1*Uup8zuee4^v= ziK$xnM1Y2A_-2R^8x}au=WWR=Wvu=q2%!Z9;YXD49zE~Hv%Yy}OcmBeA8Rm`Sd*#5 z6->=TIiIP@O@&V}HSvy^>i54+1$kJvJf4z#DV}~1;a2zVLlAiSeye*=7HL1uq8d;6 z8iafr>82g&Pq||2A`tS_!yoP zg9j-F*4<_R#DI<`229l=1_bCZCDZFa2B(`WgLwwwe<{Kz^!y~A_30MuGIdzk6@Bc$ zZemAv6DP1c54C)DD>oG~#qPvAVt1+zUjUwAuF>Z==`;tw??+IU-=ASwjo*9?LO#>{ zmXF78eH*{^>hW9O#_u?Y{N~5b`Az)5?+55KK8+{&{q=<33;@6Bc>HFn7Jd_;D@&H& z7W7#~_?(`f$Fu&do$*`P6@Bc$Z(>J&6DROH54C)LD>oG~#qY#>zWgSgQvBu|iq-Eg zAPDnXr=Vfw{+A&95({d~=4*&0T zo;*aS@ohZGlW&qIUl(8ofG2c3o-kDlPY4hPtLphZJnJX40ME2h0$%iigEIt9&JZLx zlLtAUGs;b6NO30d&aE%wp!?&}ydfDTpYAUFlh_x(1TXS(Yw%g*YP`YjPYf$RsYa07kSHCY<(B2$EC?c2XbTmik zv^R(83^kX~S=?L-XZ5LV*qh7mP=O(1*7wG))clZr<_tMv&XA`vv+ecc;_Q zTuEoBxd)upgUFX#MfqzV193ye4H>n*FVmZk23p34+jO?s%+IkQ6?wtK~NN zSj@y91ynXiB2HWVP*SKchy#_L3Rq9UnMebL;6-b9DFn^87a@Cvw&tC3+naaDtsDfh zH*eSbQ1dppogu#3W*&?`CfjCy8Go#AoB2WfaZuaLx8sk4t4A8B(e?GykjbhljsYj= z(GBh!8cg3S-S?sHdoTAr>AqLF@5iRU?W?VhdAA-cl2caeENW10tGpX!SbbZ%Oi>cy z6AZUqekxWPSF*0%mlkHh++IExGizm%(_T8orM&x zmV$6!5QJx0w>3THMCq2gbYQqx=s4p_(cV!%T}5Bk*50vYNgqyRRhf4Zd)IXA9U{Km zA+WJLg1jqJ9K2uYD!)y_Ni_Kb5{8 zfv<~-<=B2@HZx@EU%~0_rk0%(XXEEGCB+Oyr-=*yc-B~h9A-M z9z5$$XRO0gs6B&T2h1yBDV6X4r8f_DRd*|O?kVB}BzeG3hGDT3ohU)q-XjCJyGYD(e(nn7kH=BgE=Xg~1LAS? zI}5V54=-ZCkH7$X?XOucfC3Ck;XIbPD0Q@>ROHsU`w_61A@HPAyAfU`<`K(to0`3t-i^=oE9)uz0}DowUx^OZFfiErJ%%9 zCD($!xyN(_@L75V#>9dq30{R3p?l>EI@gYNjyy{t*knV$a#y*tg1X-Wlab%%+j%`( zMSgc~8HSd8YvkS5ULV1C&?)S#J>LWzo@VWN^FD|XoAQszwI=+ddLL@u3%4`mmo?$v zu_l}z)`XuLY=QE!Y8KH)#@A}xVbX@nfuglJYk`=X69Vky*ZIUYd>n#5l^*JLp^A?F zeu!OfLO1Min4Ecn1_#h-JPuEq&EKWjyj69a0Wh2CcxE$GWzA**4BrXUxV+B=kPE^O zF#y@#+#hfDJzU3VKn9_>8)NHkgiz5(2v)NY3Sxv{IOidhHJk}|*NI;4?d#m~CXg7@ zFT(0JU^V^{_i-zY`IooQ$zNWl`ofINMJqjJKD!7O2(cJl z)FgGbFO6(?K@bm8HhkjkZ1~3+=a<5HH%NjNnguR_=K6DnaGg1ZNebV?e+k~*ULNw+ z>xXp|z5}`Xi~33G7(R4tojg~~lZg*W8z!;!mkbp|crJHFf^jWmh9y`P5#r|r!T#NXkE z@H(jmEL@Ka$JSfC#zz%}UX?YV!=An6eRr?y4={n^b@67K&I(Sj>zp|ccbaVZu+ike z);#D{naJcpPd|@Ky*xIw=0UHPJm~4?@dhssQHqtom~2R6cO8-hArscaxN<~%^D74z z%ZYKQ93JOTImo%$bB%4R9C>_8R}Q1-aFdKvMe#V7R1`sze55K$;+>35xVpmq8J9tX zuE#%HS8j#hUHE%-g`(%xmA1kMk^V=jD;p7H`++tD;lcQrL%Z7U2*!qXeFB}vCOoNK zA0k;^fW3nFhH9nbNi&mVRI4cQc=#tO!*;AFd*$ozkw|=FI_#pg)IEi>&Mho5J<(OT z@X~m{1TjmMcM7`0#+Aol04BO&><}mh5(7sNAYhKN+hTX7MA>mPK2Bys{q14dx3MzY z1S|tkd^%q7nJQC!G{W$Nk%eddy)9eJ;`YO)TLrf0gGKv6u(M~tz(5vgJn~?s8xN6u zU&KyG?j~TBzsi#u7)!h(qHpqK@7EyNKk(1W9*3s-(|Vee@_5m%J4K8ahl5QSUVK8l zK>uYfIW%4{C3tZ(od)_qlEYc@;#bOm0pJB4j~7hU!VC0zpcjtR^C&%^j%OXqQs!#c zjW0r>=%WC>5C!sufWenM_&Izb3N3t5{wiCFFNt>^U;c{HcY*#{z6_8jX}*wZDZczS z(wa^{&&}zCO+k1JK6Y3y7#qAej!xs5c(Pu6pS*arc)x{%VB2yvK8CPDH=#01B8S4yU?&vYG<>Ro=&p#eM zJdY1+OLQ*ZJDrP_2KxShb1?~I=k@ureF_ri%J%aSutRz>CFpr3oyMtnlAb?EWSaq? zCmoNTOw~fq)8L8iM0%dC=NWj`-wTA(C}ebwP$>E+K(>hjWt)H@+j;PFWSb}?EORSEkNp8s86i$UYbCW_!ivKujyqa`EjDP#4L#ISl_M5l2Up0s+gQ?$CRq~b6DRxce- zfSIbr>Q%{E9uJH9dr&kJ-w1)ke6w9c!T{!*hXTwup>QRrirrrTMhh+vhpYuB97v;j za@b@Hn738Q;I~~p2DrlqjKysNJd^;&`nEj4>Gf^31!<1>96S=t$xtBPzhlRf8zP-P zA{asyB9}v690jn2Cl8VI7M|Kgi4@SR&dwcN&}vP4#{=`6azh6D1VMEt5jY-L$ovaJ z?~uXqz|oO1Tc;n&I6o1W|)Ov+z_Etjn58Yq^{WY;; za~qE}g)pccCyHcMU0Uw!9vd?XZGymtSqUP=g3m#&|<@(*T(^e77K^H z6CBV+=i!h&v{*RIrCxZarqs*9!Dum-;yxcTF4Yv|52877HE9mz+Goce;Y!Vw7+R@u zkDQ}@h7FFRIa;QFpg+c^C&s7W$EV-nvuA=2tc5&E^cz0?4xcL%v0&A5bCDvC#PJbM zROTofUV{_Ss5i!GfsYgJ!4ZwFM!V@~gnMxEa9UtEEpQE!HN9Q~G?%tnIIu8AqAx~b zp^wBuheTh3#KL?e78()@Q%KCEZg?F~RQ&!J@**GdA_w_(?Q!uJLwaUkjLAsPjP2o~-IdgK4y#^;(WPKmv+2AGScz85E76E0DpmH@ zs1#F1qfn9;$q&`nOb_yte#?`b(m*LD-GZ2OC7*O9N4jHGdP)qgCd!qZl98_DlP;Wx zz|Pas~$mW5|nQ$b&xQK?iwr0(meW z@}NN;G|094S()dM4zVat7EA`TuEHfv7+KyCBNq=Wj!ROCOS0H6$zoR$(=wvr;{1{< zwvsGP(QqD&92yvkkr;@P81j)Aa!A;8qmUTNM`Fm37)l{A7bD99E<4Cq zq2u5*U^yRh*&vsF$mJ$`A3i(Z$=bhI9Srr%$y2|ZH_QWf)lRAhP#X3Q>Poz$ZeAhk z=RF(f{S}>rW6)pAj$xbxztiyd#x>cw@cMaeg=vVLjV;X}$m@SU7vp^2P}$Exz<6&U zE4IlG?B2(7w8tCHpX0a-=82y9OXxJV;K`mjhD@s4exj@yfL5Q5qaH6^Vyc#&IYEZx zCys2uYyHC5j*MW_0Fqv};U>W@`moU@Cv0}f2@#EK9^jlVxr*ye)@UDw@>ii!UGl`c zg;yMd?ghP<;-BT!p70yP-{TeOmEzTAgd4A3iXe|yCxKU7n1fRb5D@cX+F3i!Lw>o7hMgy+K}<~={Wv`aQV1OVot zZpyOC4^ha;&&ZcqX`*&)19GYlVY-m99(_mQ2;7RdnF zf+-5wYT`-Rf+SbBHC0pwK(^?3vc*&_vL)vnmzWfJ%t-bV+DL~%?(iXF$VHHUtBeSdTMF|ar-xh|{pVBsc(`Rlz!45Z zqSHqL!!1ODlj*_$V=Z|Yq{mv+mQpDEO0R=b1VPf4Iw&RaZqd&xQTivK?w*Q&w%)%8 ze&^!v)q4tZs@`M0u+z^NhN{z9T7`4x{BU-;uzD*jnd-}&zp-Ba$au$t zRldo>3S!Qize9?S^2BvDK(#XJC6H${wVO|MEtY-J_CL; z_6@bcwFgH_|J!@%oseq zj85ZXJgGS!PI$@y@RW|nQ>JR+DM7|O<%i=bQLMks@l^iCQ~4vO9rIKO7JUT4QzA&7 z5-spF54#+miY8f}Du0zc#nZ$)ho}32FHgWf%hRX9k84gno|2>~p2C21JiQ!29#78! zPptx9i2xjtf@kG>XhX*b>>~&nP2DB7R)BHWHwO*v-2>` zVYcX#Ww!Dc6;jMjyj$(Gr-Di+;Gg9++fc59^LS0_rg(h|!k;cX?R5xBcs=<_)LpQ9 z8NzXt48mfwiXU1CiJKEzpiJIbh zvaaP?1SLH8*0sD50qM!!%tj-oM4i2XPUAW}S!aJiw%NKC2B6N;@z};xEp_&Kcn0B{ z@T_Ai?~ZGqz!rV5sC@*>+DBlheR(i*Y9GP+29tV8%3tM4)xN~rsoHq#f&HXk<3G=J zEu@ski}nJV38!msL{P$u$-AunJsaUT(gtDUy)z%(4GZUH#*gt<_{~R66G5>2ZFCwp;YpU`{IjZ#SPnu4faP>NmNQig z%L&qI>RveA1|P1bvYduw5VA1!+fi$47l9NmnpNDEXlPw`EH}cv=;IE#A?}nLVhp*- zLp(=rL@uueOKz0Eh?0_<#5+%Jt^;px$3I(#F>F{s=hN5QB=;P0a|?pzlAGHQmXVv= z;gyw}JDi^{74!>2W1R*zf(rMg^C*|f>iQF&%azn?H z8>VWJ8-k4Gh96FDh^8SKghaf4MP$D;D$D^_Tqbk}v5is7d4Xc?^>)wTr z`7oKefywWt)3^&yGWpkJvUR)|04CG%n9NiyOeV;<8Rv&%GV!Xvoy|BpUh+4t${&W! zjyWj=i#~$jBoQPhi557Shg}XQMUyNimA^`!;$-68+J>(Ng(vaP)_>aVPr=`7!%0z( zkL?OKKE4M*9v`_j^)uq*`w+0hHk>KJvk%j0ycbXM>^J1u|0n|nfM;|(o-tJm&)yGD zH{AIFyy8e7JwJqJ{mPxOMtBr`Jir>_LDmpDSd)iD4r_=SWi|Grt(DB&9BpJ5I;3U+9BDVTb*(+av^<(1e=n<`bJolB!+Q%ziAFq8R zUS7G|3*W-nkd66%6hS*5^L-iUbO&g;0t292lfDJ%lqjH-LW$; zg=t92ZyL;QT3kNI54TW_HSac2t~60LOJ2bmt7vq@BGs>jLF^J+mI=`MWg79Ox3uN> zB9}2of~U|02Q3*}NV#j5l00^P>9WXG^vQ)Y%Z82ZRCiJ!h_vJBMcDV8Yr#oB**vZNzEp;wCCTx&9e8?CR7UV(#8DqkEkkezr zHB1(O{3Lfsb{HoN6DKN9YZ;^;%nT13KAk>37#=1*vs;3YNZ`ufTx8P2!x;uERg8AKwPQJMs70E>^Xao?yS#+OAI_2yNH$ z&fy6RvVIz0bsQeqiGe~4Ke&BU_j{@osQDCb^z^FWV@Y9t?TvMsD z28Z%j*;1`q;_bLri2JI0q3Hj@e--GT<=Yzg)$sTDMzVQ)YbzW89sMVb^*(^0x%Xf` z88G%jUN_+%gkMD5^3Hn+%n}^?GM&a3@Fd4D9aY`-DP_X|aEy+}F{Wza7$Mq*HVgvt zBihi$_hds`b%}+>d-ZTOMZ8x}d9dnEV#wN+BIJbM)Fa8aRqZb!*ZN^C)j6Juw>dYJ zujrQ#;-K>VSQ)ZlkchnUr6r<@Et|rQ)^GjXR<-60UvZL6fT2*Cv!g5&Dj{?DioVpQ zd2rL(RFX)*zW&hgl^}>`so|@{JEK3iXLA-z{VV=iIc$TB@oI5T4k-*NIeahDn|<{a z1VMjb6WZ7CHixlmCKaPXzP>@H@l`x2Uuemyv!?|ieIZQ|%Q=pjNqto~% zo-F1cS&e2TW(+_{>3Ah&s+N*|8=gV<9XwUiAT*Ef!Xu|T$Kq})PlQL&#{=R{Ja`Th zp+na5kVwmVbl#_OQ*lzdF7a-m@1yOzEOBcSNQD%A&jNjq)|mH02*SBopC@U8a28+T zU23lN8ZS2thY-^I0UlATw&No9o2wBnt_tH%b zF8~+LdgYaPl?2vv;3HtqlPUEL|l77gvx{VkGAp<}^ zIv)L)s)c?(gJ%%_9M2rnHm(xZ0tjr;2a75pun$N?2oJR)4{W+t1R=qSD(P}2wzQoC zE{IV5%+i$f9fp9YH7@%Q*lil^!$+9K|G z!W{B15#)HvX15aowwvhJ2$-Zz5rlkIpQgN_ERWy7!+Eo>)!Q{5b*dQE?^K11+U0R- zjyWl!fjOz)(P{h&PtHmGnF4aCATj`RQgl24VXBrnDMHM4eIlp{yKDoJz=B;KT(C=U zza|M`06CTiIL)y@MGeB=B1KMlldg{mib3x1A*1U<$P^TTMZYHxY`WhAm7s&+m7ge= zIz~J3j#NVGY}flh-23tOWQD}{WTn0ETJ$Y!jNyL}4x_KMTGt!sg_48n50$_h=M9qrFtHqF*p*FBObS_N-vg zUU>yeYp+^Kbto>(vW*vr_6e=)#}cDgw~*SeFSKlh66%XbY}6Owbf#c1fb}I0sdRne zf&dSJGC;@SpJ>9s%QGz@KGNS}0IF}KDcR#8#6*V}Z{3Xe$!GXlPRp%d%>UT2!UOi?_ z@ak~~PH-v|o++LGX9S@hWBqpF&-lL>ockO8AAwYzj!b@w{|vUE{2Bj?u!wX&>=3#K z|25n*6@-5!mEHuToBzODbK=5U{$YSJkyfELc%XkXaK!lA!(B zPN(q~JlX!Bw^ZG>O<)*+_J@wAM3}0j{Yfwi!oMSer@w$3SRGNktEIK*&P{BjWflQg`ng@MV~ovkl5{5yU8 zQ7eW2(gc50%sl)v71N05qakGLH-M^p4t6z(QmLza;1Mv`YfnNkQgWD4Wii3MovvJq zY6z!f4m(|i@C%fs2#%euc?hR>y4F64%F&9$#jQm1HobDUt>IAgiH1$D!r`aNQaE7K zYaR~iO|P{Lxj0M&XQQ@#nS&9y@BJyxZ?-Z@=pNE61mJ*GNT1gV`AKet}7NgVWql4|ELg%Ro zI&2-LMs1e|ssnyP6pF`}ksesqnQCNs$k> zN*?(#+e>X#xyM2w@v2rN{Qacd<7!AO@R7iNQX#QKG!PQlPnw5BdOvCP#YVCEd97gm z9i-gGYG4=oV6lT#VBac@Ca~B+ng=$!gH$cnm0-x&x*+sgPd2Crz3;C)-ZA657FM-V zv4I_3xb6x>LZ4s}_jL(1wPvM7-oCEHJGW1OvzrS)!QZnb*dV5CiQiyH{4ug6{)Hge z5*$>_+7bt$_CAO|&P6VK4*w@W4Syd0r=m%l#s5kG8H7=CDgFg+u@Aysa5$ma7VUV8 zJR;jdp^g)v@jF9Zf5 z_Weg7%(f5$W?SfWezpZk1lyvExiwHw*%mOks@vW!FbqIlrsLTbOx0prBp3x@8{*Hy zwh(mK79M!m76QLI22a}}4}R9RP^o2Gbbwq&p?TOAhC_#s18fW7aGUZWZ0`NY!y#i^ zTn^p^A;n|z8LHN#iEmr*JKwf2>c#P4TXZ1qJZuZYzthJbwuSJ2Sm+3U*cN&CXKV|J ztWnM^95XF`i0WIee;RA{2iZP;hA%W2K8u&}P1?L-SadhLfwU7O7z}@>Ae|^I7%&Kf zf$sL9gE4#;aAPCWA*atV%i=({g_Mezi7a*PIaq9x2&H2A!0(|GRO87vu3CLVD1DL1 zsB6E(7dBL1Hk4>T7)pK3VuBJHs(%orFDWAi3_`f+ZXbGL3Z*{YCe}09KY)`C7*gsV z>@~uadcCe-+-Ap`cT+&S!C)`+nF7TtrW_^MVhR**9#hhaw|0OGE=hM@sks5&m73Oq zK`!~F#{P4a`di9KrN;jAyi%8a4?D3ql|^&E>W-gj=Mfx#Z|OARfdQXePS zDmAv9=ao9W?Yy=LYR^DBj;pE7vDo|_=xpx|i9sI;>_8V1-&CGL0z1(2kjU&n|ELTa ztD0g!W+)PbiG|;-Ce^IN0xhL&%>eS0)zuG5E7OH@D?kfdg`a*(L5V|!RVukQmq6H zepjB4kiKrr&o*Dk;9-Rh_ss4a#dPs7$<{Oe1;fj{whygEeFa!x+eU0Te@cAODik`NasblcEEh+M(d}!oR*QrZ$=3Gb7<(10r#e{P z5&&2adh{$~lMftv8B~h!<$3XKg%i*iimq+VYY`f>Nxqxc;l12b1&KE^H9z-W(AHUh zHn6EY4xAbPY5TIuAhH=dKIp9U@#Sb7xh~6-bEJDVUH^OH)2#aoih=NgNOS1>Pfc4}1t8?V~FUrPF~Dj&=Z>T%o7o5n5g>gcbS; z$cSJ2pe>;*@>_QOp=nV(CunOG#pgKo?sH7U+kFm4Jc(jd zrgiXmVYW=GqB7yyB}u9Pd;HuUl(+AKYnPrKEZn8CfMVYpv>9syUdIFsdDq2rA$rr) zL2ZWxjn_ufGWjG*WXSK)k@b`OXgln@vx&s$lxo)GW1Q!U4701_q`gYY@6q+^w~G*m zoj2nrl_(=W+*i(u`MNmiR~b9xHV?sr{<`JHpczQ*vKu)n5 zvBJ?#{{oqZcNz=A_lVFKH^RqjME)uJFe7%Xq3NZ@)hY<4Wf6E$iblIi{tK`+ibso3 zlQERS$AUazG5F$xd=R{c3s5S?HwM(B94ft9D{vUiD?Hio4+8=L{MUj(2CK(nJjvKG z=+jlIT0$>XwN_Et<0EH{G9}6Y)yx~fVOIH3=%5Soa>KDY^)tmol))#~F%+~K{02KU zW6@|^JHkEzxfC;8@(LFZ!zG`)?ps?g<>KSx?&Mq52`(zSn|#Zf;G(3vv#*CUT)3&= zp`%kYbpsI2(QRl1V0(l^zDi?z6t(3G9(tryZMn!HUyx=oOtUbgSpd^?5h+l-gKhN! zcl`F4R2q$5veMQ4ol>Ps$+;t7;ZPxa7F0C8s^Aiby$Zj{qOwupD{ji!f5^^YmSDx5Q_enIar@7tTEa~5AG5S)l7C$<-Z%xYWyQW0=f5XRd4aV! zCMK#0*0+?IFe5X#9M35?A1=q?B}a;cnv2@#(|Zs5!$kb-lP9k^CJ+0ol>B)r8zzhU zt2rhA;r=R5{$D%=!PC?o(}X=yOcQTEC_z}5<&@xu8=`RgK~FtUeAL4}c>@;Q{!s%5dZU1HX#~uJ}u&sd5{xewsJ`y-54W0c!atbk*x&GPGAydSU}gUW{0q<^6Yx(SkDp_r51rMIr)tN~ zGC8>Bu&Ie1O58=d!(Ak%3P%NB;(rt9Lr(A*!h0NTcq{?$w15J3Q}I8C(T1TuIx4ui z8~uy4{a~a|gj;phe}IFlFSx>+G2py>;t7!O@(f7+oiO+Sn(?tad@Qgi6nzW)gF7~c z8+Or9{M+zvA{5{MEeLqg#vTP$_Q-BvlpLNYGPd!IhiUi|cvRwo@WvGe=S7BYL`9a3 zBIENkIhFatp5#9=r;P9~?M*j^u#pjmAHT-uA9zNb95VuUa+Hy=6fb4~x@wLY`S8cD z{U1Tqi0Y)efXAYX!|1CI$%M)2;E_shcYm_SY$`RFl$OVE9C z$%x(188zbYtN@-j@Qk=PW(1xUpp0Clc&SFP8_bnC4%OO=$18Tshx0lFvUhT(r#NyeiB{P=?BEuUlF;7I|>TVZ?N zVA{^9l0JG;V5);BkSRa`NHh0`R&Y zH=t-t3m1?J7Jv^v;x#v~!V1>}d)s8vEBo<0<$z4y2gmbvXFlUO&Ueu;KXrwF4)Yz( z62_iui`HTAvtLk=@Q080jjCP4w?-}BT7LD>MPma&s<1a*E*7RT_4Bc%5Bjy#e$Be7&iJD& zucTVc9UR~i*PZwbI@BF24jFNR--CSyZm^xe4uHD^Rs*a%&b74HRSo`!+jj=l&$@y; z?Eg?a7%e!{@0VhkQ4h0DEd9rH=G*<+2A#F-fwE@|$_rgR*B553QeoZ9(z?2)>g;yc zA#mP5tvgEZ9w@_OP<~F=D@X>Awj0TNJyPSqCxu$H7q9EiML8%sHO__2UGAFd!WPZK znCr!$`?!v&arxPpyf@SGv%+IY1mz=lcBcC6Q|zlE_78e%%&b&{@EF3PsoIl8khnrG}zQvqJlQbmkVH z8t2XmMDB<92Sr}n;K{n3DZI^-B~C58O=ne8g5Wx27+y~ui=mc)f1P=>K^b}g<&XfB z-hn9hj6%6>8%ifAwHJFxDZaG^Z7a)~LyBJP&ruoaUToqr%t=6A%tJ8M*fzSp2X$DH z`Nerv^I{bSqR+8QGtw)vfvdc#>C8C-W1c<-r3b`ck-c8&RjndBnCw-p3TrR`7 z-O%S<@_C13B*pJJ6#X}Y_@R~}u?45^!Boo5Mwfl$hb_YE$JEN9yRL1h$x=?Ci}P}n zZ3?8u)nrePV*TH0kM&=3ExH$j*mTy*D>crO?e183TU~Z|e$o`3eFpw@_DynXTwUh6 z0A2P`%v(Iry*>Dc($RHGih+Tw%idDh1slIvKCr^dmMVoxihMB5Puo7UddDy|AL z=w0*FI8G+e)q-AZ1s!}L6sWK}k^;NjNVhzZbQs$_77XVCjMQUAdTbC_rEQRoD{HqT zJ@yPMzz(rEpwdfG=fToR=LY1>yx2LSzrm+BE5$AlU7>KLSvJKvg2GjV?~h^%6Lw=P z-s~p%Y&9CGI=f9&2Eqj~UpRPL3mh;%9V}o2_7_q1YEG}H3@boq1>IXHqbpl)O^= zVYtpfSQ8^4XV2j#V;<2LL_Jv&1aoEnv(sZkSx>fvsKs&&*Prd9I1jbOI7hHkQat!f zfqVwR_i0a&E~P!{MzgOd+}0@6%>u$)A6$nt55CojH6OkPX#st?)0Mr1npgyMo$~T{ zRC?@NpznD;m!-!_(qecI6if7MBBrpE{X!Hz6lo<;3e;}gJgmLI2DjF*9)jMQ<%4md3iq&Q%_+&L@S6k0AcOUrC#@i z(0$$+eePyv(jBJyJctCboTPAvSUBn0C#T1{Nyh}mRZEY(2fs3MgmgEdeD~N%c7kX* z=pM5#Svrvk@);WC1TQO`Fs+3ivO8ka6vo`-a?Tj;b@xqEdP#0_ zMObsVvVQY|s|PW6xr#HEJ!?X6^?{O?+|W4=bjLfQuB>b(-G&QD73G#hKlMeQwdBv8 zvF3YMM_mJXKBU0dxwzo!yMSQV7IaywP}c+rbn~~MuARKu8EwJut%IvuSvNu9Q;_21 zQ{?j{SlS>qL;l8DL7#cxOX+OBAgMgkV);7haOGrW%jEBfCXvrI@(m*RtOw{e%0Cc2 zh1#&f*FRCW2oW18StGL@y|x0g6ua4dpXL zF%cDqm+7s{s<;sKFOAen$?Kw&ab>AKSf3r0{G=NQt6?jQ=t4vd;DFl-Z|S%Z{Y2sV zD(*zF)b4|nVnl&dgTob1qCV8NW0Vp^3DmX|6)&QSMKR9FN@=17RQ4H4S)#&J_W4SA zqN9|;BBdhHMoM9+;!RYY%Dz&mLKI8+T(49ks!XwLQ)&?X$$OUKOZ2EPrhZbXNi>~m z_ncCjCs9{9KD`I+8RSVG#iqlt(Ai78C)m5X2 zwo@N$ptd5qPAN1~+YlWqg|URF?TD^YdJ!s|5kb#lG~(K;9f|%TpPkgsL|)}ETo1Ji z(F)4T0JR%YA+QWqHbm_~bQfk2D;ufyB!UOJfF`KDU2xo9uYvt6LG24V+X$Gc_9vf5 z^P$hhf+|uQEmH@QE{S^NYIQJ?2etG%btutY%JoKdI8g@m&#mf6q5$eWd(=@xQ>phH zQO6LirT%$J9Y^$tQa`6oAnHb`XREP9?~Kvq3cemSJtMG zF8edo`2t~_qcSkgKy8ML1~eM(k%O37o8?gRq1pzb8!J%PS^JX8x0HIpXWD6^ZDe1% zYhMw;6Dp8GZ|y7*?8pN3*UmdwjltRl(w(JVH&MGu^b_@-$=Z)Ze^LrFwA)0_DTPGs zF40~}VVU+5kp|t+%GPNQh+b1K-=h6YRGeCRxAusr4)w?b+7qIE)FY2+Pl>8hkIc}X z6NOW_i`wr*1*wNz(OwXl$>(kDFQQZ`-+k?GqUw~FN7`$mY`BrPvgg`cqBu(ZPwhQX zAoZm;nv@5}(M9S@vaS&MQ(w|`jc6(L$h^7}(OC-TraKd*=$Jw=Jr7Y)vfd^2d_<`f zOBKBUQEwUnwe^BT=SbIBFHE$abS?BEL<7jSTJ@qty~rwd&^?HTL2tIQo_cYj0J30x z^^!z;DfNMRDWX)eSwrsSlQM`i$rY%1cG3u0*4#UsrYNP6QPXdGT|KA$qJK)phDcw3n<~ zL#IAO?2so1)U$>=jV6ku{xZR7EKxR%fay--iRO{dg-#QRx>6rp;WUY84yBOl6i<{$DQtI2 zAX-d4YroS}qIVR_F{kN7_+?%z%W#@Wltpo#cbZL9hFbb-r@2J=siptpG@mGr=%!O5 zkZtC=M~(x}Czo30Y2QoGMFeM8irRyqq!*NN~$n^v~O^c~Sm8mX&HH+VQoZ-eOv zqG~j5(@eLB8c_S~G~FSJpcXr5x<_=6QaEb5Pc()`YP#tmQ6U-AJ7@ZZXf3x4rpH8m zDTQmMUx`Lj3O7v89O~?j={M4KpwW2G^nxgyM$Rv$zlhF~?wRRtqE$3D|1`ZOf&mAq zzc;-l%A&EE$N4=FJYPaRtFW__7wN%N>=S{4Rz@TBL4sa4wKevT0i<(f_bVX{be8kt z{n24sT?}*1LzK4oj^4$h+Gym1=9zrO=XbAe-%)1o8*U z&$DH{;QB8r%jl7q=azj@cA@KyBk;P;1#dX?s5=kkYKm=W>Qo3->=edaY%I!oYrLg` zY*2^UP`Vg!Zyk3m0Of4DzE9Vi$Dm7`8Ku4&<>D&jhoqkmUOx{)Ss?@E#a@_t@&c^Y z+cmnhD9FOM%!iV;-I4?{WaARZ!!VG#p0~QU)Gp3x?#dSJ;{0c?G+b(oO#zoyjZj{0 ziZUWF1>(Vc`mu#jx`M3N+zsH;5@ap*>kh1q>G4?G4`ML&M^Mia`*~w9bjRvxTR}T@ zF}jSHfwJf4*cKOK@j7PfPSC!dfY;ls`{8;(W4yj^Jp$Lk5g2FRNf^(=br`BmgtuhN zdH>i9$lG0#HO6Kb`HyRR7Thl#K{+M{Wt$9?#j2ou7mBj(Wt4NLp?q)@<*{QZ^^Pd} zk;|+pc-@`+zc=Icw!ff73GX!-cnr_efc7^W(~-5>$qExXNe^( zy8=GXr(Fm6gnGi?Bz+EINi&b#0QV``=+g{i#8$ev1-BuUNk>s0J9gVB-PVKm!6msP z%1xc_8}63iN8pm)7iC=AM}~WsL(jnF*Nx90m5a$QK=$tP3gnmrnEHB|&@wIp+SHb}u(5dq+Qt3S8)bzQl+lqWqnhUh|JbW- zKKsWO1o!MiDC61|3@F3$P#*psQ&=j)zFO@LE)C{;g5=k!E4?5F)M7r%!S#w=n71xw zl*RU-j7meygafhSw6gXT;<6hFFXtV=u}pJyCi$ zNB8bKdqE8GOY1>wD_1oFdE*3XpMaE@2C>!To5RszP6$~tXApJyrT3oL^W(1(e2l?f;it&f7?S+qFnKoopP)_XunHE$y<5b zI?O+BYu?Jup?)N`MFbYfRLb*CfeSSbVrZqae7x?c1QenqVqW{s*nsAQZ9knHr z`os0Ny>MRG+6!HjD~CfX%jF8k}f2>r^bWJ=ZB_LmRz>)YU zVME!hGt?VDp-+uEY++5}@>6}BDRCv`?kvXSg$ zA8MUd)K6YeKdHNM4`@FpOX4^?{Mj4(KrGF_C&6B|jGGU&*D|geUFZ88uV>Nq=6Jkz zCGC7@-WIZ9Wz*ELQ_t#to-dh$eZNByS6UXpvg1 zU(2nqu1IgS6~?F(@Xk)zsY&IeBRDr;DaRrB= zymSQRm>86KPoj)!j-9US-Bg*vNZheGZ=}{H0Yga@0kYrVo63K=ni;#3C*(3^m-ibsR*VYU2uzpoJklad)oaYVKy#A|@ z&G&1JE$FoiXZ)tku_yS@-1Ks4b?})*@;1ryw65zy+Cn5}`{2m^lWc4RjaiQ%Ea`Xq zQ1Ws89ce4i$Fc81*0L~J+Mj9dmjW#=v71qthf849CDwLpO-Q#f$+@Xb;kw*Ll+{~a zgdDb^8S3{h&}Y}pD5q_)fOgcD4j>OSqjbCCc!_I$5&A|Wuv#k9#-odOSPb}y1$S7H z(n>Nq0MqS~fpUrux;w5;+pNUcMnhPM1?)zt(lwtGSJTWmttp1RA4m3zY}9qSo8sh0Ubv4jobZinLS6xOi_f#PXO*IVeiBwZgO|5fSQjpR0pS*Pn%>b={kSDVwYHTUd6`5%ZGW+J-N3|o)a zG3&8h;|`8!QA^rUA|bGrlvx?&hAJ~adV9}BS!E%}yvh=govO4C&{>ZzU}0F$lJX$E z#uf%?@+}Io%^j!1|%k<4;nNKs1XQkn8RA-&iRzh3*xnOM+D1`FE{9`EY=TrBOW0Tl(mtGJ*T5pM+EQqoF zS;Q8n0;%_Ep|GT-De#%xQEP)0g^diu`{)iCsYYMjxN!^g#vZLu1`k5nKNjUGa_;~x zI@tl89RSOtvw?7531z_&i96r8wy)sM=!fGdTby_W`LVUv4hYNh%*)Q}p;MYSXepgw6bG~FjpU!{one`sn1}3K8^F=`Q+`$V{o(;=pKF=dv&L@ z^ALYO8kL`pyH07@P?qg&aov)eHV$?$bk+gpM0gUD{R7zf$prm_8rJN z%6ASm!}Esm<7}(5pJ_JFEfw^WdmgYX|6483|3AloesYih^I>>5ms`%?!sn4gL&Hp}v*K`nq{CZ-eB^%IPwaggdkeN#DO&Y~r9Rg2%8vm)NFU`rE%xYnf-xxqZ|I?(s!F?J4r!ZcEp@V9sHA z=@#b0-ncX$*2y@KJQO@PT^QXvx}z*yJm*&UKhM8yRA$47`?Q90D|ODHbhbDN^Uqu7 ze-`$?h3b@c7ka`!js1^%0{Z78eJ$+v>+IOJoa>Os{D0SH?$!WHacnQ<|DXKiZc%x; zI;Hi4@s9QI@z{I_@pnqYUDh#q9A_MxyUyCd%3NpnX_qo*KQL#xJSB_GR~o;;bzXPJ zasA3jrGg931NX`2Uq_!gr~BXHmxAo2aGag(={C-TD>uE6OAwZnr|y_8w;nH`milGF z9XiWLdwLt4u|He#VOT6XpPlVJ%^v@UD-b@jW37HBEKkn4;Fd$#hD~&1cT*8cEPj7+}EEU`mwcj+KCC!c2#^(-sz2U(gc(z$UTu{q0{J6o}_myUROv#nb03) zSaX!`LQzg`g0j_7l|;^4{Kt#gG+~Sl;uxsH{3V-xCOO~ zdzFbYe>0S`nxZU8*S|Dz3$n$~Kh^`>6UKWOE^RW_LTo?uM>)PK%3@VeJ~)c9|7Mie zdZIjC1Ld~EDBlF2^da{qz3|#X*PZElBxrT^H|&+cTTpPqqO)so+5)S@lQ=JzALRwT zD+ccDbe11Z2Xxl(^h%I>lFNbntq$Hs-ckp9LvH=zP##Q1*)_nfJ=Fgsqi*ev4pT>Roi^=tZ z;54>vBk=#JrNVhxVOP%Jys#H6m2HkhK`{5Y>2H2NV*y%zjOTx+)N(X!6603O# z)8%e z4oi?b`%P&H@`(v$Cs&l7MNl^JMEOod+1(lCCDQgG?PsJdNZP!l9Y@;wpta{8Er!=v z+zIKF#`EJir`SsoW~_BTo=4D5+GEJsTIOa0>p@OFz6Z?NBK?1t3f2SW3h!m?`yLW2 zMRy8g@^p2mJw8XEe;+!>8IxzQgVt7iI$KA3#cN#fOy@&u{IQ?!oY7CAf_N5|bDz;^ ztmzELj?Qo#!MXxQ9K3l+Rt3*+c^%qY*_Ka>cb~e8 zyVR~!|EVB9+!@;oZR7=Ki}uo`f{V?%qL$Ylwh`R3(;h6&V*LIc-s^?AOsDw{-b{rV zjrX??W57FocvIG)TsS{|7#oj=$M80X)ivfMhZrbk$6Pta^JzQUTF}vk*jq67{*b%> zk4M&rv3;zyjV$}#;HP8flu_r__8!n)m#H=uP`|n z-Ggxd*$yrHgGhysJ9~TC;(@(!vV=L;3A}3#_a+!Nr#S7}kNc;s{&{|K9?}0iI(Tnf zOygpT3$E+_NJATSj{13W5xm|>86=uQuq$qq!d}Cl-mmdlZ(2co@&sq_kH-auwe8Q_*Ce

    {)UZ8%zSENXt}>>AelVY(_Gi@Q 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�(HI14PXGtdBp~+0vbSpLX;7%SFoNB8761Lb*sGNTd)fQV0<# zgoqR>MEnX7ze2>X5b>)-c$EmR65&-M{7ErlTWr(E*K299%^29Sr9afe*;e5q&2W*X zQ{)oW`>BFEn;Sim^mV*j|J;zo=|gznoBB< zfq7!zH9{>AYJpG#EZA}aEZ9N#7VJYIyum@O1*+a{2&oO zNW?D^=@*OiOGWynBK>l)SGg!*xmC=lMQY`cPUnY$MLNMEonVnp2<3&jga|c6s3AhF z5V=%|T&hJb;Ua#u$m_Dm>$1qJDfF*WuW*qpa3e_o8r%-#tUf%4Q z6-Uu)RvcrmS+SR0v*PG_&5GmgH7ky{*Q_`W53zOX+}+yN_SU0;jaFG^rH$!Q8-81) zb=6??VkdkNAd&5b?Nn9*ei|$5S{qgd4#RdXy9EAmb`|^z_8a(>V!Mi2yJ_%CRs~

    + /// Monitors the task (which should be ProcessRecordAsync) to control + /// the lifetime of the job itself + /// + /// + public void Monitor(Task task) + { + SetJobState(JobState.Running); + task.ContinueWith(antecedent => + { + if (antecedent.IsCanceled) + { + // if the task was canceled, we're just going to call it completed. + SetJobState(JobState.Completed); + } + else if (antecedent.IsFaulted) + { + foreach (var innerException in antecedent.Exception.Flatten().InnerExceptions) + { + WriteError(new System.Management.Automation.ErrorRecord(innerException, string.Empty, System.Management.Automation.ErrorCategory.NotSpecified, null)); + } + + // a fault indicates an actual failure + SetJobState(JobState.Failed); + } + else + { + // otherwiser it's a completed state. + SetJobState(JobState.Completed); + } + }, CancellationToken); + } + + private void CheckForCancellation() + { + if (IsJobDone) + { + throw new LongRunningJobCancelledException("Long running job is canceled or stopping, continuation of the cmdlet is not permitted."); + } + } + + public void WriteInformation(InformationRecord informationRecord) + { + CheckForCancellation(); + + this.Information.Add(informationRecord); + } + + public bool ShouldContinue(string query, string caption, bool hasSecurityImpact, ref bool yesToAll, ref bool noToAll) + { + CheckForInteractive(); + return false; + } + + public void WriteDebug(string text) + { + _statusMessage = text; + CheckForCancellation(); + + if (Debug.IsOpen && Debug.Count < MaxRecords) + { + Debug.Add(new DebugRecord(text)); + } + } + + public void WriteError(ErrorRecord errorRecord) + { + if (Error.IsOpen) + { + Error.Add(errorRecord); + } + } + + public void WriteObject(object sendToPipeline) + { + CheckForCancellation(); + + if (Output.IsOpen) + { + Output.Add(new PSObject(sendToPipeline)); + } + } + + public void WriteObject(object sendToPipeline, bool enumerateCollection) + { + CheckForCancellation(); + + if (enumerateCollection && sendToPipeline is System.Collections.IEnumerable enumerable) + { + foreach (var item in enumerable) + { + WriteObject(item); + } + } + else + { + WriteObject(sendToPipeline); + } + } + + public void WriteProgress(ProgressRecord progressRecord) + { + CheckForCancellation(); + + if (Progress.IsOpen && Progress.Count < MaxRecords) + { + Progress.Add(progressRecord); + } + } + + public void WriteProgress(long sourceId, ProgressRecord progressRecord) + { + CheckForCancellation(); + + if (Progress.IsOpen && Progress.Count < MaxRecords) + { + Progress.Add(progressRecord); + } + } + + public void WriteVerbose(string text) + { + CheckForCancellation(); + + if (Verbose.IsOpen && Verbose.Count < MaxRecords) + { + Verbose.Add(new VerboseRecord(text)); + } + } + + public void WriteWarning(string text) + { + CheckForCancellation(); + + if (Warning.IsOpen && Warning.Count < MaxRecords) + { + Warning.Add(new WarningRecord(text)); + } + } + + public void WriteCommandDetail(string text) + { + WriteVerbose(text); + } + + public bool ShouldProcess(string target) + { + CheckForInteractive(); + return false; + } + + public bool ShouldProcess(string target, string action) + { + CheckForInteractive(); + return false; + } + + public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption) + { + CheckForInteractive(); + return false; + } + + public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption, out ShouldProcessReason shouldProcessReason) + { + CheckForInteractive(); + shouldProcessReason = ShouldProcessReason.None; + return false; + } + + public bool ShouldContinue(string query, string caption) + { + CheckForInteractive(); + return false; + } + + public bool ShouldContinue(string query, string caption, ref bool yesToAll, ref bool noToAll) + { + CheckForInteractive(); + return false; + } + + public bool TransactionAvailable() + { + // interactivity required? + return false; + } + + public void ThrowTerminatingError(ErrorRecord errorRecord) + { + if (Error.IsOpen) + { + Error.Add(errorRecord); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/AsyncOperationResponse.cs b/src/DataProtection/generated/runtime/AsyncOperationResponse.cs new file mode 100644 index 000000000000..b14403d0f9b4 --- /dev/null +++ b/src/DataProtection/generated/runtime/AsyncOperationResponse.cs @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + [System.ComponentModel.TypeConverter(typeof(AsyncOperationResponseTypeConverter))] + public class AsyncOperationResponse + { + private string _target; + public string Target { get => _target; set => _target = value; } + public AsyncOperationResponse() + { + } + internal AsyncOperationResponse(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json) + { + // pull target + { Target = If(json?.PropertyT("target"), out var _v) ? (string)_v : (string)Target; } + } + public string ToJsonString() + { + return $"{{ \"target\" : \"{this.Target}\" }}"; + } + + public static AsyncOperationResponse FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode node) + { + return node is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject json ? new AsyncOperationResponse(json) : null; + } + + + /// + /// Creates a new instance of , deserializing the content from a json string. + /// + /// a string containing a JSON serialized instance of this model. + /// an instance of the model class. + public static AsyncOperationResponse FromJsonString(string jsonText) => FromJson(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(jsonText)); + + } + + public partial class AsyncOperationResponseTypeConverter : System.Management.Automation.PSTypeConverter + { + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false. + /// + public override bool CanConvertFrom(object sourceValue, global::System.Type destinationType) => CanConvertFrom(sourceValue); + + /// + /// Determines if the converter can convert the parameter to the + /// parameter. + /// + /// the instance to check if it can be converted to the type. + /// + /// true if the instance could be converted to a type, otherwise false + /// + public static bool CanConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return true; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + // we say yest to PSObjects + return true; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + // we say yest to Hashtables/dictionaries + return true; + } + try + { + if (null != sourceValue.ToJsonString()) + { + return true; + } + } + catch + { + // Not one of our objects + } + try + { + string text = sourceValue.ToString()?.Trim(); + return true == text?.StartsWith("{") && true == text?.EndsWith("}") && Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(text).Type == Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonType.Object; + } + catch + { + // Doesn't look like it can be treated as JSON + } + return false; + } + + /// + /// Determines if the parameter can be converted to the parameter + /// + /// the to convert from + /// the to convert to + /// + /// true if the converter can convert the parameter to the + /// parameter, otherwise false + /// + public override bool CanConvertTo(object sourceValue, global::System.Type destinationType) => false; + + /// + /// Converts the parameter to the parameter using and + /// + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// + /// an instance of , or null if there is no suitable conversion. + /// + public override object ConvertFrom(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Converts the parameter to the parameter using and + /// + /// the value to convert into an instance of . + /// + /// an instance of , or null if there is no suitable conversion. + /// + public static object ConvertFrom(dynamic sourceValue) + { + if (null == sourceValue) + { + return null; + } + global::System.Type type = sourceValue.GetType(); + if (typeof(AsyncOperationResponse).IsAssignableFrom(type)) + { + return sourceValue; + } + try + { + return AsyncOperationResponse.FromJsonString(typeof(string) == sourceValue.GetType() ? sourceValue : sourceValue.ToJsonString()); ; + } + catch + { + // Unable to use JSON pattern + } + + if (typeof(System.Management.Automation.PSObject).IsAssignableFrom(type)) + { + return new AsyncOperationResponse { Target = (sourceValue as System.Management.Automation.PSObject).GetValueForProperty("target", "", global::System.Convert.ToString) }; + } + if (typeof(global::System.Collections.IDictionary).IsAssignableFrom(type)) + { + return new AsyncOperationResponse { Target = (sourceValue as global::System.Collections.IDictionary).GetValueForProperty("target", "", global::System.Convert.ToString) }; + } + return null; + } + + /// NotImplemented -- this will return null + /// the to convert from + /// the to convert to + /// not used by this TypeConverter. + /// when set to true, will ignore the case when converting. + /// will always return null. + public override object ConvertTo(object sourceValue, global::System.Type destinationType, global::System.IFormatProvider formatProvider, bool ignoreCase) => null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportCmdletSurface.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportCmdletSurface.cs new file mode 100644 index 000000000000..5c7a12878da8 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportCmdletSurface.cs @@ -0,0 +1,113 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Text; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "CmdletSurface")] + [DoNotExport] + public class ExportCmdletSurface : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ModuleName { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string CmdletFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string OutputFolder { get; set; } + + [Parameter] + public bool IncludeGeneralParameters { get; set; } + + [Parameter] + public bool UseExpandedFormat { get; set; } + + protected override void ProcessRecord() + { + try + { + var variants = GetScriptCmdlets(this, CmdletFolder) + .SelectMany(fi => fi.ToVariants()) + .Where(v => !v.IsDoNotExport) + .ToArray(); + var allProfiles = variants.SelectMany(v => v.Profiles).Distinct().ToArray(); + var profileGroups = allProfiles.Any() + ? variants + .SelectMany(v => (v.Profiles.Any() ? v.Profiles : allProfiles).Select(p => (profile: p, variant: v))) + .GroupBy(pv => pv.profile) + .Select(pvg => new ProfileGroup(pvg.Select(pv => pv.variant).ToArray(), pvg.Key)) + : new[] { new ProfileGroup(variants) }; + foreach (var profileGroup in profileGroups) + { + var variantGroups = profileGroup.Variants + .GroupBy(v => new { v.CmdletName }) + .Select(vg => new VariantGroup(ModuleName, vg.Key.CmdletName, vg.Select(v => v).ToArray(), String.Empty, profileGroup.ProfileName)); + var sb = UseExpandedFormat ? ExpandedFormat(variantGroups) : CondensedFormat(variantGroups); + Directory.CreateDirectory(OutputFolder); + File.WriteAllText(Path.Combine(OutputFolder, $"CmdletSurface-{profileGroup.ProfileName}.md"), sb.ToString()); + } + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + + private StringBuilder ExpandedFormat(IEnumerable variantGroups) + { + var sb = new StringBuilder(); + foreach (var variantGroup in variantGroups.OrderBy(vg => vg.CmdletName)) + { + sb.Append($"### {variantGroup.CmdletName}{Environment.NewLine}"); + var parameterGroups = variantGroup.ParameterGroups + .Where(pg => !pg.DontShow && (IncludeGeneralParameters || (pg.OrderCategory != ParameterCategory.Azure && pg.OrderCategory != ParameterCategory.Runtime))); + foreach (var parameterGroup in parameterGroups) + { + sb.Append($" - {parameterGroup.ParameterName} `{parameterGroup.ParameterType.ToSyntaxTypeName()}`{Environment.NewLine}"); + } + sb.AppendLine(); + } + + return sb; + } + + private StringBuilder CondensedFormat(IEnumerable variantGroups) + { + var sb = new StringBuilder(); + var condensedGroups = variantGroups + .GroupBy(vg => vg.CmdletNoun) + .Select(vgg => ( + CmdletNoun: vgg.Key, + CmdletVerbs: vgg.Select(vg => vg.CmdletVerb).OrderBy(cv => cv).ToArray(), + ParameterGroups: vgg.SelectMany(vg => vg.ParameterGroups).DistinctBy(p => p.ParameterName).ToArray(), + OutputTypes: vgg.SelectMany(vg => vg.OutputTypes).Select(ot => ot.Type).DistinctBy(t => t.Name).Select(t => t.ToSyntaxTypeName()).ToArray())) + .OrderBy(vg => vg.CmdletNoun); + foreach (var condensedGroup in condensedGroups) + { + sb.Append($"### {condensedGroup.CmdletNoun} [{String.Join(", ", condensedGroup.CmdletVerbs)}] `{String.Join(", ", condensedGroup.OutputTypes)}`{Environment.NewLine}"); + var parameterGroups = condensedGroup.ParameterGroups + .Where(pg => !pg.DontShow && (IncludeGeneralParameters || (pg.OrderCategory != ParameterCategory.Azure && pg.OrderCategory != ParameterCategory.Runtime))); + foreach (var parameterGroup in parameterGroups) + { + sb.Append($" - {parameterGroup.ParameterName} `{parameterGroup.ParameterType.ToSyntaxTypeName()}`{Environment.NewLine}"); + } + sb.AppendLine(); + } + + return sb; + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportExampleStub.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportExampleStub.cs new file mode 100644 index 000000000000..d6f9420391b1 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportExampleStub.cs @@ -0,0 +1,74 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.IO; +using System.Linq; +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.MarkdownTypesExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "ExampleStub")] + [DoNotExport] + public class ExportExampleStub : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ExportsFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string OutputFolder { get; set; } + + protected override void ProcessRecord() + { + try + { + if (!Directory.Exists(ExportsFolder)) + { + throw new ArgumentException($"Exports folder '{ExportsFolder}' does not exist"); + } + + var exportDirectories = Directory.GetDirectories(ExportsFolder); + if (!exportDirectories.Any()) + { + exportDirectories = new[] { ExportsFolder }; + } + + var exampleText = String.Join(String.Empty, DefaultExampleHelpInfos.Select(ehi => ehi.ToHelpExampleOutput())); + foreach (var exportDirectory in exportDirectories) + { + var outputFolder = OutputFolder; + if (exportDirectory != ExportsFolder) + { + outputFolder = Path.Combine(OutputFolder, Path.GetFileName(exportDirectory)); + Directory.CreateDirectory(outputFolder); + } + + var cmdletFilePaths = GetScriptCmdlets(exportDirectory).Select(fi => Path.Combine(outputFolder, $"{fi.Name}.md")).ToArray(); + var currentExamplesFilePaths = Directory.GetFiles(outputFolder).ToArray(); + // Remove examples of non-existing cmdlets + var removedCmdletFilePaths = currentExamplesFilePaths.Except(cmdletFilePaths); + foreach (var removedCmdletFilePath in removedCmdletFilePaths) + { + File.Delete(removedCmdletFilePath); + } + + // Only create example stubs if they don't exist + foreach (var cmdletFilePath in cmdletFilePaths.Except(currentExamplesFilePaths)) + { + File.WriteAllText(cmdletFilePath, exampleText); + } + } + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportFormatPs1xml.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportFormatPs1xml.cs new file mode 100644 index 000000000000..b1dee5debecd --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportFormatPs1xml.cs @@ -0,0 +1,99 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Reflection; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "FormatPs1xml")] + [DoNotExport] + public class ExportFormatPs1xml : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string FilePath { get; set; } + + private const string ModelNamespace = @"Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models"; + private const string SupportNamespace = @"Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support"; + private static readonly bool IsAzure = Convert.ToBoolean(@"true"); + + protected override void ProcessRecord() + { + try + { + var viewModels = GetFilteredViewParameters().Select(CreateViewModel).ToList(); + var ps1xml = new Configuration + { + ViewDefinitions = new ViewDefinitions + { + Views = viewModels + } + }; + File.WriteAllText(FilePath, ps1xml.ToXmlString()); + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + + private static IEnumerable GetFilteredViewParameters() + { + //https://stackoverflow.com/a/79738/294804 + //https://stackoverflow.com/a/949285/294804 + var types = Assembly.GetExecutingAssembly().GetExportedTypes() + .Where(t => t.IsClass + && (t.Namespace.StartsWith(ModelNamespace) || t.Namespace.StartsWith(SupportNamespace)) + && !t.GetCustomAttributes().Any()); + return types.Select(t => new ViewParameters(t, t.GetProperties() + .Select(p => new PropertyFormat(p)) + .Where(pf => !pf.Property.GetCustomAttributes().Any() + && (!IsAzure || pf.Property.Name != "Id") + && (pf.FormatTable != null || (pf.Origin != PropertyOrigin.Inlined && pf.Property.PropertyType.IsPsSimple()))) + .OrderByDescending(pf => pf.Index.HasValue) + .ThenBy(pf => pf.Index) + .ThenByDescending(pf => pf.Origin.HasValue) + .ThenBy(pf => pf.Origin))).Where(vp => vp.Properties.Any()); + } + + private static View CreateViewModel(ViewParameters viewParameters) + { + var entries = viewParameters.Properties.Select(pf => + (TableColumnHeader: new TableColumnHeader { Label = pf.Label, Width = pf.Width }, + TableColumnItem: new TableColumnItem { PropertyName = pf.Property.Name })).ToArray(); + + return new View + { + Name = viewParameters.Type.FullName, + ViewSelectedBy = new ViewSelectedBy + { + TypeName = viewParameters.Type.FullName + }, + TableControl = new TableControl + { + TableHeaders = new TableHeaders + { + TableColumnHeaders = entries.Select(e => e.TableColumnHeader).ToList() + }, + TableRowEntries = new TableRowEntries + { + TableRowEntry = new TableRowEntry + { + TableColumnItems = new TableColumnItems + { + TableItems = entries.Select(e => e.TableColumnItem).ToList() + } + } + } + } + }; + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportHelpMarkdown.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportHelpMarkdown.cs new file mode 100644 index 000000000000..62338ec2165b --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportHelpMarkdown.cs @@ -0,0 +1,53 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Linq; +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.MarkdownRenderer; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "HelpMarkdown")] + [DoNotExport] + public class ExportHelpMarkdown : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public PSModuleInfo ModuleInfo { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public PSObject[] FunctionInfo { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public PSObject[] HelpInfo { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string DocsFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ExamplesFolder { get; set; } + + protected override void ProcessRecord() + { + try + { + var helpInfos = HelpInfo.Select(hi => hi.ToPsHelpInfo()); + var variantGroups = FunctionInfo.Select(fi => fi.BaseObject).Cast() + .Join(helpInfos, fi => fi.Name, phi => phi.CmdletName, (fi, phi) => fi.ToVariants(phi)) + .Select(va => new VariantGroup(ModuleInfo.Name, va.First().CmdletName, va, String.Empty)); + WriteMarkdowns(variantGroups, ModuleInfo.ToModuleInfo(), DocsFolder, ExamplesFolder); + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportModelSurface.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportModelSurface.cs new file mode 100644 index 000000000000..510ae5b5fd55 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportModelSurface.cs @@ -0,0 +1,117 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Reflection; +using System.Text; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "ModelSurface")] + [DoNotExport] + public class ExportModelSurface : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string OutputFolder { get; set; } + + [Parameter] + public bool UseExpandedFormat { get; set; } + + private const string ModelNamespace = @"Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models"; + private const string SupportNamespace = @"Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Support"; + + protected override void ProcessRecord() + { + try + { + var types = Assembly.GetExecutingAssembly().GetExportedTypes() + .Where(t => t.IsClass && (t.Namespace.StartsWith(ModelNamespace) || t.Namespace.StartsWith(SupportNamespace))); + var typeInfos = types.Select(t => new ModelTypeInfo + { + Type = t, + TypeName = t.Name, + Properties = t.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => !p.GetIndexParameters().Any()).OrderBy(p => p.Name).ToArray(), + NamespaceGroup = t.Namespace.Split('.').LastOrDefault().EmptyIfNull() + }).Where(mti => mti.Properties.Any()); + var sb = UseExpandedFormat ? ExpandedFormat(typeInfos) : CondensedFormat(typeInfos); + Directory.CreateDirectory(OutputFolder); + File.WriteAllText(Path.Combine(OutputFolder, "ModelSurface.md"), sb.ToString()); + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + + private static StringBuilder ExpandedFormat(IEnumerable typeInfos) + { + var sb = new StringBuilder(); + foreach (var typeInfo in typeInfos.OrderBy(mti => mti.TypeName).ThenBy(mti => mti.NamespaceGroup)) + { + sb.Append($"### {typeInfo.TypeName} [{typeInfo.NamespaceGroup}]{Environment.NewLine}"); + foreach (var property in typeInfo.Properties) + { + sb.Append($" - {property.Name} `{property.PropertyType.ToSyntaxTypeName()}`{Environment.NewLine}"); + } + sb.AppendLine(); + } + + return sb; + } + + private static StringBuilder CondensedFormat(IEnumerable typeInfos) + { + var sb = new StringBuilder(); + var typeGroups = typeInfos + .GroupBy(mti => mti.TypeName) + .Select(tig => ( + Types: tig.Select(mti => mti.Type).ToArray(), + TypeName: tig.Key, + Properties: tig.SelectMany(mti => mti.Properties).DistinctBy(p => p.Name).OrderBy(p => p.Name).ToArray(), + NamespaceGroups: tig.Select(mti => mti.NamespaceGroup).OrderBy(ng => ng).ToArray() + )) + .OrderBy(tg => tg.TypeName); + foreach (var typeGroup in typeGroups) + { + var aType = typeGroup.Types.Select(GetAssociativeType).FirstOrDefault(t => t != null); + var aText = aType != null ? $@" \<{aType.ToSyntaxTypeName()}\>" : String.Empty; + sb.Append($"### {typeGroup.TypeName}{aText} [{String.Join(", ", typeGroup.NamespaceGroups)}]{Environment.NewLine}"); + foreach (var property in typeGroup.Properties) + { + var propertyAType = GetAssociativeType(property.PropertyType); + var propertyAText = propertyAType != null ? $" <{propertyAType.ToSyntaxTypeName()}>" : String.Empty; + var enumNames = GetEnumFieldNames(property.PropertyType.Unwrap()); + var enumNamesText = enumNames.Any() ? $" **{{{String.Join(", ", enumNames)}}}**" : String.Empty; + sb.Append($" - {property.Name} `{property.PropertyType.ToSyntaxTypeName()}{propertyAText}`{enumNamesText}{Environment.NewLine}"); + } + sb.AppendLine(); + } + + return sb; + } + + //https://stackoverflow.com/a/4963190/294804 + private static Type GetAssociativeType(Type type) => + type.GetInterfaces().FirstOrDefault(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAssociativeArray<>))?.GetGenericArguments().First(); + + private static string[] GetEnumFieldNames(Type type) => + type.IsValueType && !type.IsPrimitive && type != typeof(decimal) && type != typeof(DateTime) + ? type.GetFields(BindingFlags.Public | BindingFlags.Static).Where(f => f.FieldType == type).Select(p => p.Name).ToArray() + : new string[] { }; + + private class ModelTypeInfo + { + public Type Type { get; set; } + public string TypeName { get; set; } + public PropertyInfo[] Properties { get; set; } + public string NamespaceGroup { get; set; } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportProxyCmdlet.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportProxyCmdlet.cs new file mode 100644 index 000000000000..9513902c5135 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportProxyCmdlet.cs @@ -0,0 +1,159 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Text; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.MarkdownRenderer; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyTypeExtensions; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "ProxyCmdlet", DefaultParameterSetName = "Docs")] + [DoNotExport] + public class ExportProxyCmdlet : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ModuleName { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string[] ModulePath { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ExportsFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string InternalFolder { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = "Docs")] + [AllowEmptyString] + public string ModuleDescription { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = "Docs")] + [ValidateNotNullOrEmpty] + public string DocsFolder { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = "Docs")] + [ValidateNotNullOrEmpty] + public string ExamplesFolder { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = "Docs")] + public Guid ModuleGuid { get; set; } + + [Parameter(Mandatory = true, ParameterSetName = "NoDocs")] + public SwitchParameter ExcludeDocs { get; set; } + + protected override void ProcessRecord() + { + try { + var variants = GetModuleCmdletsAndHelpInfo(this, ModulePath).SelectMany(ci => ci.ToVariants()).Where(v => !v.IsDoNotExport).ToArray(); + var allProfiles = variants.SelectMany(v => v.Profiles).Distinct().ToArray(); + var profileGroups = allProfiles.Any() + ? variants + .SelectMany(v => (v.Profiles.Any() ? v.Profiles : allProfiles).Select(p => (profile: p, variant: v))) + .GroupBy(pv => pv.profile) + .Select(pvg => new ProfileGroup(pvg.Select(pv => pv.variant).ToArray(), pvg.Key)) + : new[] { new ProfileGroup(variants) }; + var variantGroups = profileGroups.SelectMany(pg => pg.Variants + .GroupBy(v => new { v.CmdletName, v.IsInternal }) + .Select(vg => new VariantGroup(ModuleName, vg.Key.CmdletName, vg.Select(v => v).ToArray(), + Path.Combine(vg.Key.IsInternal ? InternalFolder : ExportsFolder, pg.ProfileFolder), pg.ProfileName, isInternal: vg.Key.IsInternal))) + .ToArray(); + + foreach (var variantGroup in variantGroups) + { + var parameterGroups = variantGroup.ParameterGroups.ToList(); + var isValidProfile = !String.IsNullOrEmpty(variantGroup.ProfileName) && variantGroup.ProfileName != NoProfiles; + var examplesFolder = isValidProfile ? Path.Combine(ExamplesFolder, variantGroup.ProfileName) : ExamplesFolder; + var markdownInfo = new MarkdownHelpInfo(variantGroup, examplesFolder); + List examples = new List(); + foreach (var it in markdownInfo.Examples) + { + examples.Add(it); + } + variantGroup.HelpInfo.Examples = examples.ToArray(); + var sb = new StringBuilder(); + sb.Append(@" +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +"); + sb.Append($"{Environment.NewLine}"); + sb.Append(variantGroup.ToHelpCommentOutput()); + sb.Append($"function {variantGroup.CmdletName} {{{Environment.NewLine}"); + sb.Append(variantGroup.Aliases.ToAliasOutput()); + sb.Append(variantGroup.OutputTypes.ToOutputTypeOutput()); + sb.Append(variantGroup.ToCmdletBindingOutput()); + sb.Append(variantGroup.ProfileName.ToProfileOutput()); + + sb.Append("param("); + sb.Append($"{(parameterGroups.Any() ? Environment.NewLine : String.Empty)}"); + foreach (var parameterGroup in parameterGroups) + { + var parameters = parameterGroup.HasAllVariants ? parameterGroup.Parameters.Take(1) : parameterGroup.Parameters; + foreach (var parameter in parameters) + { + sb.Append(parameter.ToParameterOutput(variantGroup.HasMultipleVariants, parameterGroup.HasAllVariants)); + } + sb.Append(parameterGroup.Aliases.ToAliasOutput(true)); + sb.Append(parameterGroup.HasValidateNotNull.ToValidateNotNullOutput()); + sb.Append(parameterGroup.CompleterInfo.ToArgumentCompleterOutput()); + sb.Append(parameterGroup.OrderCategory.ToParameterCategoryOutput()); + sb.Append(parameterGroup.InfoAttribute.ToInfoOutput(parameterGroup.ParameterType)); + sb.Append(parameterGroup.ToDefaultInfoOutput()); + sb.Append(parameterGroup.ParameterType.ToParameterTypeOutput()); + sb.Append(parameterGroup.Description.ToParameterDescriptionOutput()); + sb.Append(parameterGroup.ParameterName.ToParameterNameOutput(parameterGroups.IndexOf(parameterGroup) == parameterGroups.Count - 1)); + } + sb.Append($"){Environment.NewLine}{Environment.NewLine}"); + + sb.Append(variantGroup.ToBeginOutput()); + sb.Append(variantGroup.ToProcessOutput()); + sb.Append(variantGroup.ToEndOutput()); + + sb.Append($"}}{Environment.NewLine}"); + + Directory.CreateDirectory(variantGroup.OutputFolder); + File.WriteAllText(variantGroup.FilePath, sb.ToString()); + + File.AppendAllText(Path.Combine(variantGroup.OutputFolder, "ProxyCmdletDefinitions.ps1"), sb.ToString()); + } + + if (!ExcludeDocs) + { + var moduleInfo = new PsModuleHelpInfo(ModuleName, ModuleGuid, ModuleDescription); + foreach (var variantGroupsByProfile in variantGroups.GroupBy(vg => vg.ProfileName)) + { + var profileName = variantGroupsByProfile.Key; + var isValidProfile = !String.IsNullOrEmpty(profileName) && profileName != NoProfiles; + var docsFolder = isValidProfile ? Path.Combine(DocsFolder, profileName) : DocsFolder; + var examplesFolder = isValidProfile ? Path.Combine(ExamplesFolder, profileName) : ExamplesFolder; + WriteMarkdowns(variantGroupsByProfile, moduleInfo, docsFolder, examplesFolder); + } + } + } catch (Exception ee) { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportPsd1.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportPsd1.cs new file mode 100644 index 000000000000..7894f8ef21e8 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportPsd1.cs @@ -0,0 +1,125 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Text; +using System.Text.RegularExpressions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "Psd1")] + [DoNotExport] + public class ExportPsd1 : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ExportsFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string CustomFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string Psd1Path { get; set; } + + [Parameter(Mandatory = true)] + public Guid ModuleGuid { get; set; } + + private static readonly bool IsAzure = Convert.ToBoolean(@"true"); + private const string CustomFolderRelative = "./custom"; + private const string Indent = Psd1Indent; + + protected override void ProcessRecord() + { + try + { + if (!Directory.Exists(ExportsFolder)) + { + throw new ArgumentException($"Exports folder '{ExportsFolder}' does not exist"); + } + + if (!Directory.Exists(CustomFolder)) + { + throw new ArgumentException($"Custom folder '{CustomFolder}' does not exist"); + } + + string version = Convert.ToString(@"0.1.0"); + // Validate the module version should be semantic version + // Following regex is official from https://semver.org/ + Regex rx = new Regex(@"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$", RegexOptions.Compiled); + if (rx.Matches(version).Count != 1) + { + throw new ArgumentException("Module-version is not a valid Semantic Version"); + } + + string previewVersion = null; + if (version.Contains('-')) + { + string[] versions = version.Split("-".ToCharArray(), 2); + version = versions[0]; + previewVersion = versions[1]; + } + + var sb = new StringBuilder(); + sb.AppendLine("@{"); + sb.AppendLine($@"{GuidStart} = '{ModuleGuid}'"); + sb.AppendLine($@"{Indent}RootModule = '{"./Az.DataProtection.psm1"}'"); + sb.AppendLine($@"{Indent}ModuleVersion = '{version}'"); + sb.AppendLine($@"{Indent}CompatiblePSEditions = 'Core', 'Desktop'"); + sb.AppendLine($@"{Indent}Author = '{"Microsoft Corporation"}'"); + sb.AppendLine($@"{Indent}CompanyName = '{"Microsoft Corporation"}'"); + sb.AppendLine($@"{Indent}Copyright = '{"Microsoft Corporation. All rights reserved."}'"); + sb.AppendLine($@"{Indent}Description = '{"Microsoft Azure PowerShell: DataProtection cmdlets"}'"); + sb.AppendLine($@"{Indent}PowerShellVersion = '5.1'"); + sb.AppendLine($@"{Indent}DotNetFrameworkVersion = '4.7.2'"); + sb.AppendLine($@"{Indent}RequiredAssemblies = '{"./bin/Az.DataProtection.private.dll"}'"); + + var customFormatPs1xmlFiles = Directory.GetFiles(CustomFolder) + .Where(f => f.EndsWith(".format.ps1xml")) + .Select(f => $"{CustomFolderRelative}/{Path.GetFileName(f)}"); + var formatList = customFormatPs1xmlFiles.Prepend("./Az.DataProtection.format.ps1xml").ToPsList(); + sb.AppendLine($@"{Indent}FormatsToProcess = {formatList}"); + + var functionInfos = GetScriptCmdlets(ExportsFolder).ToArray(); + var cmdletsList = functionInfos.Select(fi => fi.Name).Distinct().Append("*").ToPsList(); + sb.AppendLine($@"{Indent}FunctionsToExport = {cmdletsList}"); + var aliasesList = functionInfos.SelectMany(fi => fi.ScriptBlock.Attributes).ToAliasNames().Append("*").ToPsList(); + sb.AppendLine($@"{Indent}AliasesToExport = {aliasesList}"); + + sb.AppendLine($@"{Indent}PrivateData = @{{"); + sb.AppendLine($@"{Indent}{Indent}PSData = @{{"); + + if (previewVersion != null) + { + sb.AppendLine($@"{Indent}{Indent}{Indent}Prerelease = {previewVersion}"); + } + sb.AppendLine($@"{Indent}{Indent}{Indent}Tags = {"Azure ResourceManager ARM PSModule DataProtection".Split(' ').ToPsList().NullIfEmpty() ?? "''"}"); + sb.AppendLine($@"{Indent}{Indent}{Indent}LicenseUri = '{"https://aka.ms/azps-license"}'"); + sb.AppendLine($@"{Indent}{Indent}{Indent}ProjectUri = '{"https://github.com/Azure/azure-powershell"}'"); + sb.AppendLine($@"{Indent}{Indent}{Indent}ReleaseNotes = ''"); + var profilesList = ""; + if (IsAzure && !String.IsNullOrEmpty(profilesList)) + { + sb.AppendLine($@"{Indent}{Indent}{Indent}Profiles = {profilesList}"); + } + + sb.AppendLine($@"{Indent}{Indent}}}"); + sb.AppendLine($@"{Indent}}}"); + sb.AppendLine(@"}"); + + File.WriteAllText(Psd1Path, sb.ToString()); + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportTestStub.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportTestStub.cs new file mode 100644 index 000000000000..534e5982ee9e --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/ExportTestStub.cs @@ -0,0 +1,137 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Text; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyOutputExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsData.Export, "TestStub")] + [DoNotExport] + public class ExportTestStub : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ModuleName { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ExportsFolder { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string OutputFolder { get; set; } + + [Parameter] + public SwitchParameter IncludeGenerated { get; set; } + + protected override void ProcessRecord() + { + try + { + if (!Directory.Exists(ExportsFolder)) + { + throw new ArgumentException($"Exports folder '{ExportsFolder}' does not exist"); + } + + var exportDirectories = Directory.GetDirectories(ExportsFolder); + if (!exportDirectories.Any()) + { + exportDirectories = new[] { ExportsFolder }; + } + var utilFile = Path.Combine(OutputFolder, "utils.ps1"); + if (!File.Exists(utilFile)) + { + var sc = new StringBuilder(); + sc.AppendLine(@"function RandomString([bool]$allChars, [int32]$len) { + if ($allChars) { + return -join ((33..126) | Get-Random -Count $len | % {[char]$_}) + } else { + return -join ((48..57) + (97..122) | Get-Random -Count $len | % {[char]$_}) + } +} +$env = @{} +function setupEnv() { + # Preload subscriptionId and tenant from context, which will be used in test + # as default. You could change them if needed. + $env.SubscriptionId = (Get-AzContext).Subscription.Id + $env.Tenant = (Get-AzContext).Tenant.Id + # For any resources you created for test, you should add it to $env here. + $envFile = 'env.json' + if ($TestMode -eq 'live') { + $envFile = 'localEnv.json' + } + set-content -Path (Join-Path $PSScriptRoot $envFile) -Value (ConvertTo-Json $env) +} +function cleanupEnv() { + # Clean resources you create for testing +} +"); + File.WriteAllText(utilFile, sc.ToString()); + } + foreach (var exportDirectory in exportDirectories) + { + var outputFolder = OutputFolder; + if (exportDirectory != ExportsFolder) + { + outputFolder = Path.Combine(OutputFolder, Path.GetFileName(exportDirectory)); + Directory.CreateDirectory(outputFolder); + } + + var variantGroups = GetScriptCmdlets(exportDirectory) + .SelectMany(fi => fi.ToVariants()) + .Where(v => !v.IsDoNotExport) + .GroupBy(v => v.CmdletName) + .Select(vg => new VariantGroup(ModuleName, vg.Key, vg.Select(v => v).ToArray(), outputFolder, isTest: true)) + .Where(vtg => !File.Exists(vtg.FilePath) && (IncludeGenerated || !vtg.IsGenerated)); + + foreach (var variantGroup in variantGroups) + { + var sb = new StringBuilder(); + sb.AppendLine(@"$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath)" +); + sb.AppendLine($@"$TestRecordingFile = Join-Path $PSScriptRoot '{variantGroup.CmdletName}.Recording.json'"); + sb.AppendLine(@"$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName +"); + + sb.AppendLine($"Describe '{variantGroup.CmdletName}' {{"); + var variants = variantGroup.Variants + .Where(v => IncludeGenerated || !v.Attributes.OfType().Any()) + .ToList(); + + foreach (var variant in variants) + { + sb.AppendLine($"{Indent}It '{variant.VariantName}' -skip {{"); + sb.AppendLine($"{Indent}{Indent}{{ throw [System.NotImplementedException] }} | Should -Not -Throw"); + var variantSeparator = variants.IndexOf(variant) == variants.Count - 1 ? String.Empty : Environment.NewLine; + sb.AppendLine($"{Indent}}}{variantSeparator}"); + } + sb.AppendLine("}"); + + File.WriteAllText(variantGroup.FilePath, sb.ToString()); + } + } + } + catch (Exception ee) + { + Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetCommonParameter.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetCommonParameter.cs new file mode 100644 index 000000000000..393fc314af00 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetCommonParameter.cs @@ -0,0 +1,52 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsCommon.Get, "CommonParameter")] + [OutputType(typeof(Dictionary))] + [DoNotExport] + public class GetCommonParameter : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public PSCmdlet PSCmdlet { get; set; } + + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public Dictionary PSBoundParameter { get; set; } + + protected override void ProcessRecord() + { + try + { + var variants = PSCmdlet.MyInvocation.MyCommand.ToVariants(); + var commonParameterNames = variants.ToParameterGroups() + .Where(pg => pg.OrderCategory == ParameterCategory.Azure || pg.OrderCategory == ParameterCategory.Runtime) + .Select(pg => pg.ParameterName); + if (variants.Any(v => v.SupportsShouldProcess)) + { + commonParameterNames = commonParameterNames.Append("Confirm").Append("WhatIf"); + } + if (variants.Any(v => v.SupportsPaging)) + { + commonParameterNames = commonParameterNames.Append("First").Append("Skip").Append("IncludeTotalCount"); + } + + var names = commonParameterNames.ToArray(); + var keys = PSBoundParameter.Keys.Where(k => names.Contains(k)); + WriteObject(keys.ToDictionary(key => key, key => PSBoundParameter[key]), true); + } + catch (System.Exception ee) + { + System.Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetModuleGuid.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetModuleGuid.cs new file mode 100644 index 000000000000..96f19ca4f9a8 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetModuleGuid.cs @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsCommon.Get, "ModuleGuid")] + [DoNotExport] + public class GetModuleGuid : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string Psd1Path { get; set; } + + protected override void ProcessRecord() + { + try + { + WriteObject(ReadGuidFromPsd1(Psd1Path)); + } + catch (System.Exception ee) + { + System.Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetScriptCmdlet.cs b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetScriptCmdlet.cs new file mode 100644 index 000000000000..aeec7cbddc05 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Cmdlets/GetScriptCmdlet.cs @@ -0,0 +1,53 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Linq; +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpers; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + [Cmdlet(VerbsCommon.Get, "ScriptCmdlet")] + [OutputType(typeof(string[]))] + [DoNotExport] + public class GetScriptCmdlet : PSCmdlet + { + [Parameter(Mandatory = true)] + [ValidateNotNullOrEmpty] + public string ScriptFolder { get; set; } + + [Parameter] + public SwitchParameter IncludeDoNotExport { get; set; } + + [Parameter] + public SwitchParameter AsAlias { get; set; } + + [Parameter] + public SwitchParameter AsFunctionInfo { get; set; } + + protected override void ProcessRecord() + { + try + { + var functionInfos = GetScriptCmdlets(this, ScriptFolder) + .Where(fi => IncludeDoNotExport || !fi.ScriptBlock.Attributes.OfType().Any()) + .ToArray(); + if (AsFunctionInfo) + { + WriteObject(functionInfos, true); + return; + } + var aliases = functionInfos.SelectMany(i => i.ScriptBlock.Attributes).ToAliasNames(); + var names = functionInfos.Select(fi => fi.Name).Distinct(); + var output = (AsAlias ? aliases : names).DefaultIfEmpty("''").ToArray(); + WriteObject(output, true); + } + catch (System.Exception ee) + { + System.Console.WriteLine($"${ee.GetType().Name}/{ee.StackTrace}"); + throw ee; + } + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/CollectionExtensions.cs b/src/DataProtection/generated/runtime/BuildTime/CollectionExtensions.cs new file mode 100644 index 000000000000..0d4f01b19c96 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/CollectionExtensions.cs @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class CollectionExtensions + { + public static T[] NullIfEmpty(this T[] collection) => (collection?.Any() ?? false) ? collection : null; + public static IEnumerable EmptyIfNull(this IEnumerable collection) => collection ?? Enumerable.Empty(); + + // https://stackoverflow.com/a/4158364/294804 + public static IEnumerable DistinctBy(this IEnumerable collection, Func selector) => + collection.GroupBy(selector).Select(group => group.First()); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/MarkdownRenderer.cs b/src/DataProtection/generated/runtime/BuildTime/MarkdownRenderer.cs new file mode 100644 index 000000000000..21233dfac674 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/MarkdownRenderer.cs @@ -0,0 +1,121 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.MarkdownTypesExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyOutputExtensions; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class MarkdownRenderer + { + public static void WriteMarkdowns(IEnumerable variantGroups, PsModuleHelpInfo moduleHelpInfo, string docsFolder, string examplesFolder) + { + Directory.CreateDirectory(docsFolder); + var markdownInfos = variantGroups.Where(vg => !vg.IsInternal).Select(vg => new MarkdownHelpInfo(vg, examplesFolder)).OrderBy(mhi => mhi.CmdletName).ToArray(); + + foreach (var markdownInfo in markdownInfos) + { + var sb = new StringBuilder(); + sb.Append(markdownInfo.ToHelpMetadataOutput()); + sb.Append($"# {markdownInfo.CmdletName}{Environment.NewLine}{Environment.NewLine}"); + sb.Append($"## SYNOPSIS{Environment.NewLine}{markdownInfo.Synopsis.ToDescriptionFormat()}{Environment.NewLine}{Environment.NewLine}"); + + sb.Append($"## SYNTAX{Environment.NewLine}{Environment.NewLine}"); + var hasMultipleParameterSets = markdownInfo.SyntaxInfos.Length > 1; + foreach (var syntaxInfo in markdownInfo.SyntaxInfos) + { + sb.Append(syntaxInfo.ToHelpSyntaxOutput(hasMultipleParameterSets)); + } + + sb.Append($"## DESCRIPTION{Environment.NewLine}{markdownInfo.Description.ToDescriptionFormat()}{Environment.NewLine}{Environment.NewLine}"); + + sb.Append($"## EXAMPLES{Environment.NewLine}{Environment.NewLine}"); + foreach (var exampleInfo in markdownInfo.Examples) + { + sb.Append(exampleInfo.ToHelpExampleOutput()); + } + + sb.Append($"## PARAMETERS{Environment.NewLine}{Environment.NewLine}"); + foreach (var parameter in markdownInfo.Parameters) + { + sb.Append(parameter.ToHelpParameterOutput()); + } + if (markdownInfo.SupportsShouldProcess) + { + foreach (var parameter in SupportsShouldProcessParameters) + { + sb.Append(parameter.ToHelpParameterOutput()); + } + } + if (markdownInfo.SupportsPaging) + { + foreach (var parameter in SupportsPagingParameters) + { + sb.Append(parameter.ToHelpParameterOutput()); + } + } + + sb.Append($"### CommonParameters{Environment.NewLine}This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).{Environment.NewLine}{Environment.NewLine}"); + + sb.Append($"## INPUTS{Environment.NewLine}{Environment.NewLine}"); + foreach (var input in markdownInfo.Inputs) + { + sb.Append($"### {input}{Environment.NewLine}{Environment.NewLine}"); + } + + sb.Append($"## OUTPUTS{Environment.NewLine}{Environment.NewLine}"); + foreach (var output in markdownInfo.Outputs) + { + sb.Append($"### {output}{Environment.NewLine}{Environment.NewLine}"); + } + + sb.Append($"## NOTES{Environment.NewLine}{Environment.NewLine}"); + sb.Append($"ALIASES{Environment.NewLine}{Environment.NewLine}"); + foreach (var alias in markdownInfo.Aliases) + { + sb.Append($"### {alias}{Environment.NewLine}{Environment.NewLine}"); + } + if (markdownInfo.ComplexInterfaceInfos.Any()) + { + sb.Append($"{ComplexParameterHeader}{Environment.NewLine}"); + } + foreach (var complexInterfaceInfo in markdownInfo.ComplexInterfaceInfos) + { + sb.Append($"{complexInterfaceInfo.ToNoteOutput(includeDashes: true, includeBackticks: true)}{Environment.NewLine}{Environment.NewLine}"); + } + + sb.Append($"## RELATED LINKS{Environment.NewLine}{Environment.NewLine}"); + foreach (var relatedLink in markdownInfo.RelatedLinks) + { + sb.Append($"{relatedLink}{Environment.NewLine}{Environment.NewLine}"); + } + + File.WriteAllText(Path.Combine(docsFolder, $"{markdownInfo.CmdletName}.md"), sb.ToString()); + } + + WriteModulePage(moduleHelpInfo, markdownInfos, docsFolder); + } + + private static void WriteModulePage(PsModuleHelpInfo moduleInfo, MarkdownHelpInfo[] markdownInfos, string docsFolder) + { + var sb = new StringBuilder(); + sb.Append(moduleInfo.ToModulePageMetadataOutput()); + sb.Append($"# {moduleInfo.Name} Module{Environment.NewLine}"); + sb.Append($"## Description{Environment.NewLine}{moduleInfo.Description.ToDescriptionFormat()}{Environment.NewLine}{Environment.NewLine}"); + + sb.Append($"## {moduleInfo.Name} Cmdlets{Environment.NewLine}"); + foreach (var markdownInfo in markdownInfos) + { + sb.Append(markdownInfo.ToModulePageCmdletOutput()); + } + + File.WriteAllText(Path.Combine(docsFolder, $"{moduleInfo.Name}.md"), sb.ToString()); + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsFormatTypes.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsFormatTypes.cs new file mode 100644 index 000000000000..1ddd10f9c460 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsFormatTypes.cs @@ -0,0 +1,138 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Serialization; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class ViewParameters + { + public Type Type { get; } + public IEnumerable Properties { get; } + + public ViewParameters(Type type, IEnumerable properties) + { + Type = type; + Properties = properties; + } + } + + internal class PropertyFormat + { + public PropertyInfo Property { get; } + public FormatTableAttribute FormatTable { get; } + + public int? Index { get; } + public string Label { get; } + public int? Width { get; } + public PropertyOrigin? Origin { get; } + + public PropertyFormat(PropertyInfo propertyInfo) + { + Property = propertyInfo; + FormatTable = Property.GetCustomAttributes().FirstOrDefault(); + var origin = Property.GetCustomAttributes().FirstOrDefault(); + + Index = FormatTable?.HasIndex ?? false ? (int?)FormatTable.Index : null; + Label = FormatTable?.Label ?? propertyInfo.Name; + Width = FormatTable?.HasWidth ?? false ? (int?)FormatTable.Width : null; + // If we have an index, we don't want to use Origin. + Origin = FormatTable?.HasIndex ?? false ? null : origin?.Origin; + } + } + + [Serializable] + [XmlRoot(nameof(Configuration))] + public class Configuration + { + [XmlElement("ViewDefinitions")] + public ViewDefinitions ViewDefinitions { get; set; } + } + + [Serializable] + public class ViewDefinitions + { + //https://stackoverflow.com/a/10518657/294804 + [XmlElement("View")] + public List Views { get; set; } + } + + [Serializable] + public class View + { + [XmlElement(nameof(Name))] + public string Name { get; set; } + [XmlElement(nameof(ViewSelectedBy))] + public ViewSelectedBy ViewSelectedBy { get; set; } + [XmlElement(nameof(TableControl))] + public TableControl TableControl { get; set; } + } + + [Serializable] + public class ViewSelectedBy + { + [XmlElement(nameof(TypeName))] + public string TypeName { get; set; } + } + + [Serializable] + public class TableControl + { + [XmlElement(nameof(TableHeaders))] + public TableHeaders TableHeaders { get; set; } + [XmlElement(nameof(TableRowEntries))] + public TableRowEntries TableRowEntries { get; set; } + } + + [Serializable] + public class TableHeaders + { + [XmlElement("TableColumnHeader")] + public List TableColumnHeaders { get; set; } + } + + [Serializable] + public class TableColumnHeader + { + [XmlElement(nameof(Label))] + public string Label { get; set; } + [XmlElement(nameof(Width))] + public int? Width { get; set; } + + //https://stackoverflow.com/a/4095225/294804 + public bool ShouldSerializeWidth() => Width.HasValue; + } + + [Serializable] + public class TableRowEntries + { + [XmlElement(nameof(TableRowEntry))] + public TableRowEntry TableRowEntry { get; set; } + } + + [Serializable] + public class TableRowEntry + { + [XmlElement(nameof(TableColumnItems))] + public TableColumnItems TableColumnItems { get; set; } + } + + [Serializable] + public class TableColumnItems + { + [XmlElement("TableColumnItem")] + public List TableItems { get; set; } + } + + [Serializable] + public class TableColumnItem + { + [XmlElement(nameof(PropertyName))] + public string PropertyName { get; set; } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpMarkdownOutputs.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpMarkdownOutputs.cs new file mode 100644 index 000000000000..5f9f5053cc0a --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpMarkdownOutputs.cs @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Linq; +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpOutputExtensions; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class HelpMetadataOutput + { + public MarkdownHelpInfo HelpInfo { get; } + + public HelpMetadataOutput(MarkdownHelpInfo helpInfo) + { + HelpInfo = helpInfo; + } + + public override string ToString() => $@"--- +external help file:{(!String.IsNullOrEmpty(HelpInfo.ExternalHelpFilename) ? $" {HelpInfo.ExternalHelpFilename}" : String.Empty)} +Module Name: {HelpInfo.ModuleName} +online version: {HelpInfo.OnlineVersion} +schema: {HelpInfo.Schema.ToString(3)} +--- + +"; + } + + internal class HelpSyntaxOutput + { + public MarkdownSyntaxHelpInfo SyntaxInfo { get; } + public bool HasMultipleParameterSets { get; } + + public HelpSyntaxOutput(MarkdownSyntaxHelpInfo syntaxInfo, bool hasMultipleParameterSets) + { + SyntaxInfo = syntaxInfo; + HasMultipleParameterSets = hasMultipleParameterSets; + } + + public override string ToString() + { + var psnText = HasMultipleParameterSets ? $"### {SyntaxInfo.ParameterSetName}{(SyntaxInfo.IsDefault ? " (Default)" : String.Empty)}{Environment.NewLine}" : String.Empty; + return $@"{psnText}``` +{SyntaxInfo.SyntaxText} +``` + +"; + } + } + + internal class HelpExampleOutput + { + public MarkdownExampleHelpInfo ExampleInfo { get; } + + public HelpExampleOutput(MarkdownExampleHelpInfo exampleInfo) + { + ExampleInfo = exampleInfo; + } + + public override string ToString() => $@"{ExampleNameHeader}{ExampleInfo.Name} +{ExampleCodeHeader} +{ExampleInfo.Code} +{ExampleCodeFooter} + +{ExampleInfo.Description.ToDescriptionFormat()} + +"; + } + + + internal class HelpParameterOutput + { + public MarkdownParameterHelpInfo ParameterInfo { get; } + + public HelpParameterOutput(MarkdownParameterHelpInfo parameterInfo) + { + ParameterInfo = parameterInfo; + } + + public override string ToString() + { + var pipelineInputTypes = new[] + { + ParameterInfo.AcceptsPipelineByValue ? "ByValue" : String.Empty, + ParameterInfo.AcceptsPipelineByPropertyName ? "ByPropertyName" : String.Empty + }.JoinIgnoreEmpty(", "); + var pipelineInput = ParameterInfo.AcceptsPipelineByValue || ParameterInfo.AcceptsPipelineByPropertyName + ? $@"{true} ({pipelineInputTypes})" + : false.ToString(); + + return $@"### -{ParameterInfo.Name} +{ParameterInfo.Description.ToDescriptionFormat()} + +```yaml +Type: {ParameterInfo.Type.FullName} +Parameter Sets: {(ParameterInfo.HasAllParameterSets ? "(All)" : ParameterInfo.ParameterSetNames.JoinIgnoreEmpty(", "))} +Aliases:{(ParameterInfo.Aliases.Any() ? $" {ParameterInfo.Aliases.JoinIgnoreEmpty(", ")}" : String.Empty)} + +Required: {ParameterInfo.IsRequired} +Position: {ParameterInfo.Position} +Default value: {ParameterInfo.DefaultValue} +Accept pipeline input: {pipelineInput} +Accept wildcard characters: {ParameterInfo.AcceptsWildcardCharacters} +``` + +"; + } + } + + internal class ModulePageMetadataOutput + { + public PsModuleHelpInfo ModuleInfo { get; } + + private static string HelpLinkPrefix { get; } = @"https://docs.microsoft.com/en-us/powershell/module/"; + + public ModulePageMetadataOutput(PsModuleHelpInfo moduleInfo) + { + ModuleInfo = moduleInfo; + } + + public override string ToString() => $@"--- +Module Name: {ModuleInfo.Name} +Module Guid: {ModuleInfo.Guid} +Download Help Link: {HelpLinkPrefix}{ModuleInfo.Name.ToLowerInvariant()} +Help Version: 1.0.0.0 +Locale: en-US +--- + +"; + } + + internal class ModulePageCmdletOutput + { + public MarkdownHelpInfo HelpInfo { get; } + + public ModulePageCmdletOutput(MarkdownHelpInfo helpInfo) + { + HelpInfo = helpInfo; + } + + public override string ToString() => $@"### [{HelpInfo.CmdletName}]({HelpInfo.CmdletName}.md) +{HelpInfo.Description.ToDescriptionFormat()} + +"; + } + + internal static class PsHelpOutputExtensions + { + public static string EscapeAngleBrackets(this string text) => text?.Replace("<", @"\<").Replace(">", @"\>"); + public static string ReplaceSentenceEndWithNewline(this string text) => text?.Replace(". ", $".{Environment.NewLine}").Replace(". ", $".{Environment.NewLine}"); + public static string ReplaceBrWithNewline(this string text) => text?.Replace("
    ", $"{Environment.NewLine}"); + public static string ToDescriptionFormat(this string text, bool escapeAngleBrackets = true) + { + var description = text?.ReplaceBrWithNewline(); + description = escapeAngleBrackets ? description?.EscapeAngleBrackets() : description; + return description?.ReplaceSentenceEndWithNewline().Trim(); + } + + public const string ExampleNameHeader = "### "; + public const string ExampleCodeHeader = "```powershell"; + public const string ExampleCodeFooter = "```"; + + public static HelpMetadataOutput ToHelpMetadataOutput(this MarkdownHelpInfo helpInfo) => new HelpMetadataOutput(helpInfo); + + public static HelpSyntaxOutput ToHelpSyntaxOutput(this MarkdownSyntaxHelpInfo syntaxInfo, bool hasMultipleParameterSets) => new HelpSyntaxOutput(syntaxInfo, hasMultipleParameterSets); + + public static HelpExampleOutput ToHelpExampleOutput(this MarkdownExampleHelpInfo exampleInfo) => new HelpExampleOutput(exampleInfo); + + public static HelpParameterOutput ToHelpParameterOutput(this MarkdownParameterHelpInfo parameterInfo) => new HelpParameterOutput(parameterInfo); + + public static ModulePageMetadataOutput ToModulePageMetadataOutput(this PsModuleHelpInfo moduleInfo) => new ModulePageMetadataOutput(moduleInfo); + + public static ModulePageCmdletOutput ToModulePageCmdletOutput(this MarkdownHelpInfo helpInfo) => new ModulePageCmdletOutput(helpInfo); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpTypes.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpTypes.cs new file mode 100644 index 000000000000..3bbb5d5be4c0 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsHelpTypes.cs @@ -0,0 +1,199 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class PsHelpInfo + { + public string CmdletName { get; } + public string ModuleName { get; } + public string Synopsis { get; } + public string Description { get; } + public string AlertText { get; } + public string Category { get; } + public PsHelpLinkInfo OnlineVersion { get; } + public PsHelpLinkInfo[] RelatedLinks { get; } + public bool? HasCommonParameters { get; } + public bool? HasWorkflowCommonParameters { get; } + + public PsHelpTypeInfo[] InputTypes { get; } + public PsHelpTypeInfo[] OutputTypes { get; } + public PsHelpExampleInfo[] Examples { get; set; } + public string[] Aliases { get; } + + public PsParameterHelpInfo[] Parameters { get; } + public PsHelpSyntaxInfo[] Syntax { get; } + + public object Component { get; } + public object Functionality { get; } + public object PsSnapIn { get; } + public object Role { get; } + public string NonTerminatingErrors { get; } + + public PsHelpInfo(PSObject helpObject = null) + { + helpObject = helpObject ?? new PSObject(); + CmdletName = helpObject.GetProperty("Name").NullIfEmpty() ?? helpObject.GetNestedProperty("details", "name"); + ModuleName = helpObject.GetProperty("ModuleName"); + Synopsis = helpObject.GetProperty("Synopsis"); + Description = helpObject.GetProperty("description").EmptyIfNull().ToDescriptionText().NullIfEmpty() ?? + helpObject.GetNestedProperty("details", "description").EmptyIfNull().ToDescriptionText(); + AlertText = helpObject.GetNestedProperty("alertSet", "alert").EmptyIfNull().ToDescriptionText(); + Category = helpObject.GetProperty("Category"); + HasCommonParameters = helpObject.GetProperty("CommonParameters").ToNullableBool(); + HasWorkflowCommonParameters = helpObject.GetProperty("WorkflowCommonParameters").ToNullableBool(); + + var links = helpObject.GetNestedProperty("relatedLinks", "navigationLink").EmptyIfNull().Select(nl => nl.ToLinkInfo()).ToArray(); + OnlineVersion = links.FirstOrDefault(l => l.Text?.ToLowerInvariant().StartsWith("online version:") ?? links.Length == 1); + RelatedLinks = links.Where(l => !l.Text?.ToLowerInvariant().StartsWith("online version:") ?? links.Length != 1).ToArray(); + + InputTypes = helpObject.GetNestedProperty("inputTypes", "inputType").EmptyIfNull().Select(it => it.ToTypeInfo()).ToArray(); + OutputTypes = helpObject.GetNestedProperty("returnValues", "returnValue").EmptyIfNull().Select(rv => rv.ToTypeInfo()).ToArray(); + Examples = helpObject.GetNestedProperty("examples", "example").EmptyIfNull().Select(e => e.ToExampleInfo()).ToArray(); + Aliases = helpObject.GetProperty("aliases").EmptyIfNull().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); + + Parameters = helpObject.GetNestedProperty("parameters", "parameter").EmptyIfNull().Select(p => p.ToPsParameterHelpInfo()).ToArray(); + Syntax = helpObject.GetNestedProperty("syntax", "syntaxItem").EmptyIfNull().Select(si => si.ToSyntaxInfo()).ToArray(); + + Component = helpObject.GetProperty("Component"); + Functionality = helpObject.GetProperty("Functionality"); + PsSnapIn = helpObject.GetProperty("PSSnapIn"); + Role = helpObject.GetProperty("Role"); + NonTerminatingErrors = helpObject.GetProperty("nonTerminatingErrors"); + } + } + + internal class PsHelpTypeInfo + { + public string Name { get; } + public string Description { get; } + + public PsHelpTypeInfo(PSObject typeObject) + { + Name = typeObject.GetNestedProperty("type", "name").EmptyIfNull().Trim(); + Description = typeObject.GetProperty("description").EmptyIfNull().ToDescriptionText(); + } + } + + internal class PsHelpLinkInfo + { + public string Uri { get; } + public string Text { get; } + + public PsHelpLinkInfo(PSObject linkObject) + { + Uri = linkObject.GetProperty("uri"); + Text = linkObject.GetProperty("linkText"); + } + } + + internal class PsHelpSyntaxInfo + { + public string CmdletName { get; } + public PsParameterHelpInfo[] Parameters { get; } + + public PsHelpSyntaxInfo(PSObject syntaxObject) + { + CmdletName = syntaxObject.GetProperty("name"); + Parameters = syntaxObject.GetProperty("parameter").EmptyIfNull().Select(p => p.ToPsParameterHelpInfo()).ToArray(); + } + } + + internal class PsHelpExampleInfo + { + public string Title { get; } + public string Code { get; } + public string Remarks { get; } + + public PsHelpExampleInfo(PSObject exampleObject) + { + Title = exampleObject.GetProperty("title"); + Code = exampleObject.GetProperty("code"); + Remarks = exampleObject.GetProperty("remarks").EmptyIfNull().ToDescriptionText(); + } + public PsHelpExampleInfo(MarkdownExampleHelpInfo markdownExample) + { + Title = markdownExample.Name; + Code = markdownExample.Code; + Remarks = markdownExample.Description; + } + + public static implicit operator PsHelpExampleInfo(MarkdownExampleHelpInfo markdownExample) => new PsHelpExampleInfo(markdownExample); + } + + internal class PsParameterHelpInfo + { + public string DefaultValueAsString { get; } + + public string Name { get; } + public string TypeName { get; } + public string Description { get; } + public string SupportsPipelineInput { get; } + public string PositionText { get; } + public string[] ParameterSetNames { get; } + public string[] Aliases { get; } + + public bool? SupportsGlobbing { get; } + public bool? IsRequired { get; } + public bool? IsVariableLength { get; } + public bool? IsDynamic { get; } + + public PsParameterHelpInfo(PSObject parameterHelpObject = null) + { + parameterHelpObject = parameterHelpObject ?? new PSObject(); + DefaultValueAsString = parameterHelpObject.GetProperty("defaultValue"); + Name = parameterHelpObject.GetProperty("name"); + TypeName = parameterHelpObject.GetProperty("parameterValue").NullIfEmpty() ?? parameterHelpObject.GetNestedProperty("type", "name"); + Description = parameterHelpObject.GetProperty("Description").EmptyIfNull().ToDescriptionText(); + SupportsPipelineInput = parameterHelpObject.GetProperty("pipelineInput"); + PositionText = parameterHelpObject.GetProperty("position"); + ParameterSetNames = parameterHelpObject.GetProperty("parameterSetName").EmptyIfNull().Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries); + Aliases = parameterHelpObject.GetProperty("aliases").EmptyIfNull().Split(new[] { ", " }, StringSplitOptions.RemoveEmptyEntries); + + SupportsGlobbing = parameterHelpObject.GetProperty("globbing").ToNullableBool(); + IsRequired = parameterHelpObject.GetProperty("required").ToNullableBool(); + IsVariableLength = parameterHelpObject.GetProperty("variableLength").ToNullableBool(); + IsDynamic = parameterHelpObject.GetProperty("isDynamic").ToNullableBool(); + } + } + + internal class PsModuleHelpInfo + { + public string Name { get; } + public Guid Guid { get; } + public string Description { get; } + + public PsModuleHelpInfo(PSModuleInfo moduleInfo) + : this(moduleInfo?.Name ?? String.Empty, moduleInfo?.Guid ?? Guid.NewGuid(), moduleInfo?.Description ?? String.Empty) + { + } + + public PsModuleHelpInfo(string name, Guid guid, string description) + { + Name = name; + Guid = guid; + Description = description; + } + } + + internal static class HelpTypesExtensions + { + public static PsHelpInfo ToPsHelpInfo(this PSObject helpObject) => new PsHelpInfo(helpObject); + public static PsParameterHelpInfo ToPsParameterHelpInfo(this PSObject parameterHelpObject) => new PsParameterHelpInfo(parameterHelpObject); + + public static string ToDescriptionText(this IEnumerable descriptionObject) => descriptionObject != null + ? String.Join(Environment.NewLine, descriptionObject.Select(dl => dl.GetProperty("Text").EmptyIfNull())).NullIfWhiteSpace() + : null; + public static PsHelpTypeInfo ToTypeInfo(this PSObject typeObject) => new PsHelpTypeInfo(typeObject); + public static PsHelpExampleInfo ToExampleInfo(this PSObject exampleObject) => new PsHelpExampleInfo(exampleObject); + public static PsHelpLinkInfo ToLinkInfo(this PSObject linkObject) => new PsHelpLinkInfo(linkObject); + public static PsHelpSyntaxInfo ToSyntaxInfo(this PSObject syntaxObject) => new PsHelpSyntaxInfo(syntaxObject); + public static PsModuleHelpInfo ToModuleInfo(this PSModuleInfo moduleInfo) => new PsModuleHelpInfo(moduleInfo); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsMarkdownTypes.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsMarkdownTypes.cs new file mode 100644 index 000000000000..3ec0e07918c2 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsMarkdownTypes.cs @@ -0,0 +1,291 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.MarkdownTypesExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsHelpOutputExtensions; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class MarkdownHelpInfo + { + public string ExternalHelpFilename { get; } + public string ModuleName { get; } + public string OnlineVersion { get; } + public Version Schema { get; } + + public string CmdletName { get; } + public string[] Aliases { get; } + public string Synopsis { get; } + public string Description { get; } + + public MarkdownSyntaxHelpInfo[] SyntaxInfos { get; } + public MarkdownExampleHelpInfo[] Examples { get; } + public MarkdownParameterHelpInfo[] Parameters { get; } + + public string[] Inputs { get; } + public string[] Outputs { get; } + public ComplexInterfaceInfo[] ComplexInterfaceInfos { get; } + public string[] RelatedLinks { get; } + + public bool SupportsShouldProcess { get; } + public bool SupportsPaging { get; } + + public MarkdownHelpInfo(VariantGroup variantGroup, string examplesFolder, string externalHelpFilename = "") + { + ExternalHelpFilename = externalHelpFilename; + ModuleName = variantGroup.ModuleName; + var helpInfo = variantGroup.HelpInfo; + var commentInfo = variantGroup.CommentInfo; + Schema = Version.Parse("2.0.0"); + + CmdletName = variantGroup.CmdletName; + Aliases = (variantGroup.Aliases.NullIfEmpty() ?? helpInfo.Aliases).Where(a => a != "None").ToArray(); + Synopsis = commentInfo.Synopsis; + Description = commentInfo.Description; + + SyntaxInfos = variantGroup.Variants + .Select(v => new MarkdownSyntaxHelpInfo(v, variantGroup.ParameterGroups, v.VariantName == variantGroup.DefaultParameterSetName)) + .OrderByDescending(v => v.IsDefault).ThenBy(v => v.ParameterSetName).ToArray(); + Examples = GetExamplesFromMarkdown(examplesFolder).NullIfEmpty() + ?? helpInfo.Examples.Select(e => e.ToExampleHelpInfo()).ToArray().NullIfEmpty() + ?? DefaultExampleHelpInfos; + + Parameters = variantGroup.ParameterGroups + .Where(pg => !pg.DontShow) + .Select(pg => new MarkdownParameterHelpInfo( + variantGroup.Variants.SelectMany(v => v.HelpInfo.Parameters).Where(phi => phi.Name == pg.ParameterName).ToArray(), pg)) + .OrderBy(phi => phi.Name).ToArray(); + + Inputs = commentInfo.Inputs; + Outputs = commentInfo.Outputs; + + ComplexInterfaceInfos = variantGroup.ComplexInterfaceInfos; + OnlineVersion = commentInfo.OnlineVersion; + RelatedLinks = commentInfo.RelatedLinks; + + SupportsShouldProcess = variantGroup.SupportsShouldProcess; + SupportsPaging = variantGroup.SupportsPaging; + } + + private MarkdownExampleHelpInfo[] GetExamplesFromMarkdown(string examplesFolder) + { + var filePath = Path.Combine(examplesFolder, $"{CmdletName}.md"); + if (!Directory.Exists(examplesFolder) || !File.Exists(filePath)) return null; + + var lines = File.ReadAllLines(filePath); + var nameIndices = lines.Select((l, i) => l.StartsWith(ExampleNameHeader) ? i : -1).Where(i => i != -1).ToArray(); + //https://codereview.stackexchange.com/a/187148/68772 + var indexCountGroups = nameIndices.Skip(1).Append(lines.Length).Zip(nameIndices, (next, current) => (NameIndex: current, LineCount: next - current)); + var exampleGroups = indexCountGroups.Select(icg => lines.Skip(icg.NameIndex).Take(icg.LineCount).ToArray()); + return exampleGroups.Select(eg => + { + var name = eg.First().Replace(ExampleNameHeader, String.Empty); + var codeStartIndex = eg.Select((l, i) => l.StartsWith(ExampleCodeHeader) ? (int?)i : null).FirstOrDefault(i => i.HasValue); + var codeEndIndex = eg.Select((l, i) => l.StartsWith(ExampleCodeFooter) ? (int?)i : null).FirstOrDefault(i => i.HasValue && i != codeStartIndex); + var code = codeStartIndex.HasValue && codeEndIndex.HasValue + ? String.Join(Environment.NewLine, eg.Skip(codeStartIndex.Value + 1).Take(codeEndIndex.Value - (codeStartIndex.Value + 1))) + : String.Empty; + var descriptionStartIndex = (codeEndIndex ?? 0) + 1; + descriptionStartIndex = String.IsNullOrWhiteSpace(eg[descriptionStartIndex]) ? descriptionStartIndex + 1 : descriptionStartIndex; + var descriptionEndIndex = eg.Length - 1; + descriptionEndIndex = String.IsNullOrWhiteSpace(eg[descriptionEndIndex]) ? descriptionEndIndex - 1 : descriptionEndIndex; + var description = String.Join(Environment.NewLine, eg.Skip(descriptionStartIndex).Take((descriptionEndIndex + 1) - descriptionStartIndex)); + return new MarkdownExampleHelpInfo(name, code, description); + }).ToArray(); + } + } + + internal class MarkdownSyntaxHelpInfo + { + public Variant Variant { get; } + public bool IsDefault { get; } + public string ParameterSetName { get; } + public Parameter[] Parameters { get; } + public string SyntaxText { get; } + + public MarkdownSyntaxHelpInfo(Variant variant, ParameterGroup[] parameterGroups, bool isDefault) + { + Variant = variant; + IsDefault = isDefault; + ParameterSetName = Variant.VariantName; + Parameters = Variant.Parameters + .Where(p => !p.DontShow).OrderByDescending(p => p.IsMandatory) + //https://stackoverflow.com/a/6461526/294804 + .ThenByDescending(p => p.Position.HasValue).ThenBy(p => p.Position) + // Use the OrderCategory of the parameter group because the final order category is the highest of the group, and not the order category of the individual parameters from the variants. + .ThenBy(p => parameterGroups.First(pg => pg.ParameterName == p.ParameterName).OrderCategory).ThenBy(p => p.ParameterName).ToArray(); + SyntaxText = CreateSyntaxFormat(); + } + + //https://github.com/PowerShell/platyPS/blob/a607a926bfffe1e1a1e53c19e0057eddd0c07611/src/Markdown.MAML/Renderer/Markdownv2Renderer.cs#L29-L32 + private const int SyntaxLineWidth = 110; + private string CreateSyntaxFormat() + { + var parameterStrings = Parameters.Select(p => p.ToPropertySyntaxOutput().ToString()); + if (Variant.SupportsShouldProcess) + { + parameterStrings = parameterStrings.Append(" [-Confirm]").Append(" [-WhatIf]"); + } + if (Variant.SupportsPaging) + { + parameterStrings = parameterStrings.Append(" [-First ]").Append(" [-IncludeTotalCount]").Append(" [-Skip ]"); + } + parameterStrings = parameterStrings.Append(" []"); + + var lines = new List(20); + return parameterStrings.Aggregate(Variant.CmdletName, (current, ps) => + { + var combined = current + ps; + if (combined.Length <= SyntaxLineWidth) return combined; + + lines.Add(current); + return ps; + }, last => + { + lines.Add(last); + return String.Join(Environment.NewLine, lines); + }); + } + } + + internal class MarkdownExampleHelpInfo + { + public string Name { get; } + public string Code { get; } + public string Description { get; } + + public MarkdownExampleHelpInfo(string name, string code, string description) + { + Name = name; + Code = code; + Description = description; + } + } + + internal class MarkdownParameterHelpInfo + { + public string Name { get; set; } + public string Description { get; set; } + public Type Type { get; set; } + public string Position { get; set; } + public string DefaultValue { get; set; } + + public bool HasAllParameterSets { get; set; } + public string[] ParameterSetNames { get; set; } + public string[] Aliases { get; set; } + + public bool IsRequired { get; set; } + public bool IsDynamic { get; set; } + public bool AcceptsPipelineByValue { get; set; } + public bool AcceptsPipelineByPropertyName { get; set; } + public bool AcceptsWildcardCharacters { get; set; } + + // For use by common parameters that have no backing data in the objects themselves. + public MarkdownParameterHelpInfo() { } + + public MarkdownParameterHelpInfo(PsParameterHelpInfo[] parameterHelpInfos, ParameterGroup parameterGroup) + { + Name = parameterGroup.ParameterName; + Description = parameterGroup.Description.NullIfEmpty() + ?? parameterHelpInfos.Select(phi => phi.Description).FirstOrDefault(d => !String.IsNullOrEmpty(d)).EmptyIfNull(); + Type = parameterGroup.ParameterType; + Position = parameterGroup.FirstPosition?.ToString() + ?? parameterHelpInfos.Select(phi => phi.PositionText).FirstOrDefault(d => !String.IsNullOrEmpty(d)).ToUpperFirstCharacter().NullIfEmpty() + ?? "Named"; + // This no longer uses firstHelpInfo.DefaultValueAsString since it seems to be broken. For example, it has a value of 0 for Int32, but no default value was declared. + DefaultValue = parameterGroup.DefaultInfo?.Script ?? "None"; + + HasAllParameterSets = parameterGroup.HasAllVariants; + ParameterSetNames = (parameterGroup.Parameters.Select(p => p.VariantName).ToArray().NullIfEmpty() + ?? parameterHelpInfos.SelectMany(phi => phi.ParameterSetNames).Distinct()) + .OrderBy(psn => psn).ToArray(); + Aliases = parameterGroup.Aliases.NullIfEmpty() ?? parameterHelpInfos.SelectMany(phi => phi.Aliases).ToArray(); + + IsRequired = parameterHelpInfos.Select(phi => phi.IsRequired).FirstOrDefault(r => r == true) ?? parameterGroup.Parameters.Any(p => p.IsMandatory); + IsDynamic = parameterHelpInfos.Select(phi => phi.IsDynamic).FirstOrDefault(d => d == true) ?? false; + AcceptsPipelineByValue = parameterHelpInfos.Select(phi => phi.SupportsPipelineInput?.Contains("ByValue")).FirstOrDefault(bv => bv == true) ?? parameterGroup.ValueFromPipeline; + AcceptsPipelineByPropertyName = parameterHelpInfos.Select(phi => phi.SupportsPipelineInput?.Contains("ByPropertyName")).FirstOrDefault(bv => bv == true) ?? parameterGroup.ValueFromPipelineByPropertyName; + AcceptsWildcardCharacters = parameterGroup.SupportsWildcards; + } + } + + internal static class MarkdownTypesExtensions + { + public static MarkdownExampleHelpInfo ToExampleHelpInfo(this PsHelpExampleInfo exampleInfo) => new MarkdownExampleHelpInfo(exampleInfo.Title, exampleInfo.Code, exampleInfo.Remarks); + + public static MarkdownExampleHelpInfo[] DefaultExampleHelpInfos = + { + new MarkdownExampleHelpInfo("Example 1: {{ Add title here }}", $@"PS C:\> {{{{ Add code here }}}}{Environment.NewLine}{Environment.NewLine}{{{{ Add output here }}}}", @"{{ Add description here }}"), + new MarkdownExampleHelpInfo("Example 2: {{ Add title here }}", $@"PS C:\> {{{{ Add code here }}}}{Environment.NewLine}{Environment.NewLine}{{{{ Add output here }}}}", @"{{ Add description here }}") + }; + + public static MarkdownParameterHelpInfo[] SupportsShouldProcessParameters = + { + new MarkdownParameterHelpInfo + { + Name = "Confirm", + Description ="Prompts you for confirmation before running the cmdlet.", + Type = typeof(SwitchParameter), + Position = "Named", + DefaultValue = "None", + HasAllParameterSets = true, + ParameterSetNames = new [] { "(All)" }, + Aliases = new [] { "cf" } + }, + new MarkdownParameterHelpInfo + { + Name = "WhatIf", + Description ="Shows what would happen if the cmdlet runs. The cmdlet is not run.", + Type = typeof(SwitchParameter), + Position = "Named", + DefaultValue = "None", + HasAllParameterSets = true, + ParameterSetNames = new [] { "(All)" }, + Aliases = new [] { "wi" } + } + }; + + public static MarkdownParameterHelpInfo[] SupportsPagingParameters = + { + new MarkdownParameterHelpInfo + { + Name = "First", + Description ="Gets only the first 'n' objects.", + Type = typeof(ulong), + Position = "Named", + DefaultValue = "None", + HasAllParameterSets = true, + ParameterSetNames = new [] { "(All)" }, + Aliases = new string[0] + }, + new MarkdownParameterHelpInfo + { + Name = "IncludeTotalCount", + Description ="Reports the number of objects in the data set (an integer) followed by the objects. If the cmdlet cannot determine the total count, it returns \"Unknown total count\".", + Type = typeof(SwitchParameter), + Position = "Named", + DefaultValue = "None", + HasAllParameterSets = true, + ParameterSetNames = new [] { "(All)" }, + Aliases = new string[0] + }, + new MarkdownParameterHelpInfo + { + Name = "Skip", + Description ="Ignores the first 'n' objects and then gets the remaining objects.", + Type = typeof(ulong), + Position = "Named", + DefaultValue = "None", + HasAllParameterSets = true, + ParameterSetNames = new [] { "(All)" }, + Aliases = new string[0] + } + }; + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyOutputs.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyOutputs.cs new file mode 100644 index 000000000000..5dcdc280dd59 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyOutputs.cs @@ -0,0 +1,513 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; +using System.Text; +using System.Text.RegularExpressions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyOutputExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyTypeExtensions; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class OutputTypeOutput + { + public PSTypeName[] OutputTypes { get; } + + public OutputTypeOutput(IEnumerable outputTypes) + { + OutputTypes = outputTypes.ToArray(); + } + + public override string ToString() => OutputTypes != null && OutputTypes.Any() ? $"[OutputType({OutputTypes.Select(ot => $"[{ot}]").JoinIgnoreEmpty(ItemSeparator)})]{Environment.NewLine}" : String.Empty; + } + + internal class CmdletBindingOutput + { + public VariantGroup VariantGroup { get; } + + public CmdletBindingOutput(VariantGroup variantGroup) + { + VariantGroup = variantGroup; + } + + public override string ToString() + { + var dpsText = VariantGroup.DefaultParameterSetName.IsValidDefaultParameterSetName() ? $"DefaultParameterSetName='{VariantGroup.DefaultParameterSetName}'" : String.Empty; + var sspText = VariantGroup.SupportsShouldProcess ? $"SupportsShouldProcess{ItemSeparator}ConfirmImpact='Medium'" : String.Empty; + var pbText = $"PositionalBinding={false.ToPsBool()}"; + var propertyText = new[] { dpsText, pbText, sspText }.JoinIgnoreEmpty(ItemSeparator); + return $"[CmdletBinding({propertyText})]{Environment.NewLine}"; + } + } + + internal class ParameterOutput + { + public Parameter Parameter { get; } + public bool HasMultipleVariantsInVariantGroup { get; } + public bool HasAllVariantsInParameterGroup { get; } + + public ParameterOutput(Parameter parameter, bool hasMultipleVariantsInVariantGroup, bool hasAllVariantsInParameterGroup) + { + Parameter = parameter; + HasMultipleVariantsInVariantGroup = hasMultipleVariantsInVariantGroup; + HasAllVariantsInParameterGroup = hasAllVariantsInParameterGroup; + } + + public override string ToString() + { + var psnText = HasMultipleVariantsInVariantGroup && !HasAllVariantsInParameterGroup ? $"ParameterSetName='{Parameter.VariantName}'" : String.Empty; + var positionText = Parameter.Position != null ? $"Position={Parameter.Position}" : String.Empty; + var mandatoryText = Parameter.IsMandatory ? "Mandatory" : String.Empty; + var dontShowText = Parameter.DontShow ? "DontShow" : String.Empty; + var vfpText = Parameter.ValueFromPipeline ? "ValueFromPipeline" : String.Empty; + var vfpbpnText = Parameter.ValueFromPipelineByPropertyName ? "ValueFromPipelineByPropertyName" : String.Empty; + var propertyText = new[] { psnText, positionText, mandatoryText, dontShowText, vfpText, vfpbpnText }.JoinIgnoreEmpty(ItemSeparator); + return $"{Indent}[Parameter({propertyText})]{Environment.NewLine}"; + } + } + + internal class AliasOutput + { + public string[] Aliases { get; } + public bool IncludeIndent { get; } + + public AliasOutput(string[] aliases, bool includeIndent = false) + { + Aliases = aliases; + IncludeIndent = includeIndent; + } + + public override string ToString() => Aliases?.Any() ?? false ? $"{(IncludeIndent ? Indent : String.Empty)}[Alias({Aliases.Select(an => $"'{an}'").JoinIgnoreEmpty(ItemSeparator)})]{Environment.NewLine}" : String.Empty; + } + + internal class ValidateNotNullOutput + { + public bool HasValidateNotNull { get; } + + public ValidateNotNullOutput(bool hasValidateNotNull) + { + HasValidateNotNull = hasValidateNotNull; + } + + public override string ToString() => HasValidateNotNull ? $"{Indent}[ValidateNotNull()]{Environment.NewLine}" : String.Empty; + } + + internal class ArgumentCompleterOutput + { + public CompleterInfo CompleterInfo { get; } + + public ArgumentCompleterOutput(CompleterInfo completerInfo) + { + CompleterInfo = completerInfo; + } + + public override string ToString() => CompleterInfo != null + ? $"{Indent}[ArgumentCompleter({(CompleterInfo.IsTypeCompleter ? $"[{CompleterInfo.Type.Unwrap().ToPsType()}]" : $"{{{CompleterInfo.Script.ToPsSingleLine("; ")}}}")})]{Environment.NewLine}" + : String.Empty; + } + + internal class DefaultInfoOutput + { + public bool HasDefaultInfo { get; } + public DefaultInfo DefaultInfo { get; } + + public DefaultInfoOutput(ParameterGroup parameterGroup) + { + HasDefaultInfo = parameterGroup.HasDefaultInfo; + DefaultInfo = parameterGroup.DefaultInfo; + } + + public override string ToString() + { + var nameText = !String.IsNullOrEmpty(DefaultInfo?.Name) ? $"Name='{DefaultInfo?.Name}'" : String.Empty; + var descriptionText = !String.IsNullOrEmpty(DefaultInfo?.Description) ? $"Description='{DefaultInfo?.Description.ToPsStringLiteral()}'" : String.Empty; + var scriptText = !String.IsNullOrEmpty(DefaultInfo?.Script) ? $"Script='{DefaultInfo?.Script.ToPsSingleLine("; ")}'" : String.Empty; + var propertyText = new[] { nameText, descriptionText, scriptText }.JoinIgnoreEmpty(ItemSeparator); + return HasDefaultInfo ? $"{Indent}[{typeof(DefaultInfoAttribute).ToPsAttributeType()}({propertyText})]{Environment.NewLine}" : String.Empty; + } + } + + internal class ParameterTypeOutput + { + public Type ParameterType { get; } + + public ParameterTypeOutput(Type parameterType) + { + ParameterType = parameterType; + } + + public override string ToString() => $"{Indent}[{ParameterType.ToPsType()}]{Environment.NewLine}"; + } + + internal class ParameterNameOutput + { + public string ParameterName { get; } + public bool IsLast { get; } + + public ParameterNameOutput(string parameterName, bool isLast) + { + ParameterName = parameterName; + IsLast = isLast; + } + + public override string ToString() => $"{Indent}${{{ParameterName}}}{(IsLast ? String.Empty : $",{Environment.NewLine}")}{Environment.NewLine}"; + } + + internal class BeginOutput + { + public VariantGroup VariantGroup { get; } + + public BeginOutput(VariantGroup variantGroup) + { + VariantGroup = variantGroup; + } + + public override string ToString() => $@"begin {{ +{Indent}try {{ +{Indent}{Indent}$outBuffer = $null +{Indent}{Indent}if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) {{ +{Indent}{Indent}{Indent}$PSBoundParameters['OutBuffer'] = 1 +{Indent}{Indent}}} +{Indent}{Indent}$parameterSet = $PSCmdlet.ParameterSetName +{GetParameterSetToCmdletMapping()}{GetDefaultValuesStatements()} +{Indent}{Indent}$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) +{Indent}{Indent}$scriptCmd = {{& $wrappedCmd @PSBoundParameters}} +{Indent}{Indent}$steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) +{Indent}{Indent}$steppablePipeline.Begin($PSCmdlet) +{Indent}}} catch {{ +{Indent}{Indent}throw +{Indent}}} +}} + +"; + + private string GetParameterSetToCmdletMapping() + { + var sb = new StringBuilder(); + sb.AppendLine($"{Indent}{Indent}$mapping = @{{"); + foreach (var variant in VariantGroup.Variants) + { + sb.AppendLine($@"{Indent}{Indent}{Indent}{variant.VariantName} = '{variant.PrivateModuleName}\{variant.PrivateCmdletName}';"); + } + sb.Append($"{Indent}{Indent}}}"); + return sb.ToString(); + } + + private string GetDefaultValuesStatements() + { + var defaultInfos = VariantGroup.ParameterGroups.Where(pg => pg.HasDefaultInfo).Select(pg => pg.DefaultInfo).ToArray(); + var sb = new StringBuilder(); + + foreach (var defaultInfo in defaultInfos) + { + var variantListString = defaultInfo.ParameterGroup.VariantNames.ToPsList(); + var parameterName = defaultInfo.ParameterGroup.ParameterName; + sb.AppendLine(); + sb.AppendLine($"{Indent}{Indent}if (({variantListString}) -contains $parameterSet -and -not $PSBoundParameters.ContainsKey('{parameterName}')) {{"); + sb.AppendLine($"{Indent}{Indent}{Indent}$PSBoundParameters['{parameterName}'] = {defaultInfo.Script}"); + sb.Append($"{Indent}{Indent}}}"); + } + return sb.ToString(); + } + } + + internal class ProcessOutput + { + public override string ToString() => $@"process {{ +{Indent}try {{ +{Indent}{Indent}$steppablePipeline.Process($_) +{Indent}}} catch {{ +{Indent}{Indent}throw +{Indent}}} +}} + +"; + } + + internal class EndOutput + { + public override string ToString() => $@"end {{ +{Indent}try {{ +{Indent}{Indent}$steppablePipeline.End() +{Indent}}} catch {{ +{Indent}{Indent}throw +{Indent}}} +}} +"; + } + + internal class HelpCommentOutput + { + public VariantGroup VariantGroup { get; } + public CommentInfo CommentInfo { get; } + + public HelpCommentOutput(VariantGroup variantGroup) + { + VariantGroup = variantGroup; + CommentInfo = variantGroup.CommentInfo; + } + + public override string ToString() + { + var inputs = String.Join(Environment.NewLine, CommentInfo.Inputs.Select(i => $".Inputs{Environment.NewLine}{i}")); + var inputsText = !String.IsNullOrEmpty(inputs) ? $"{Environment.NewLine}{inputs}" : String.Empty; + var outputs = String.Join(Environment.NewLine, CommentInfo.Outputs.Select(o => $".Outputs{Environment.NewLine}{o}")); + var outputsText = !String.IsNullOrEmpty(outputs) ? $"{Environment.NewLine}{outputs}" : String.Empty; + var notes = String.Join($"{Environment.NewLine}{Environment.NewLine}", VariantGroup.ComplexInterfaceInfos.Select(cii => cii.ToNoteOutput())); + var notesText = !String.IsNullOrEmpty(notes) ? $"{Environment.NewLine}.Notes{Environment.NewLine}{ComplexParameterHeader}{notes}" : String.Empty; + var relatedLinks = String.Join(Environment.NewLine, CommentInfo.RelatedLinks.Select(l => $".Link{Environment.NewLine}{l}")); + var relatedLinksText = !String.IsNullOrEmpty(relatedLinks) ? $"{Environment.NewLine}{relatedLinks}" : String.Empty; + var examples = ""; + foreach (var example in VariantGroup.HelpInfo.Examples) + { + examples = examples + ".Example" + "\r\n" + example.Code + "\r\n"; + } + return $@"<# +.Synopsis +{CommentInfo.Synopsis.ToDescriptionFormat(false)} +.Description +{CommentInfo.Description.ToDescriptionFormat(false)} +{examples}{inputsText}{outputsText}{notesText} +.Link +{CommentInfo.OnlineVersion}{relatedLinksText} +#> +"; + } + } + + internal class ParameterDescriptionOutput + { + public string Description { get; } + + public ParameterDescriptionOutput(string description) + { + Description = description; + } + + public override string ToString() => !String.IsNullOrEmpty(Description) + ? Description.ToDescriptionFormat(false).NormalizeNewLines() + .Split(new [] { Environment.NewLine }, StringSplitOptions.None) + .Aggregate(String.Empty, (c, n) => c + $"{Indent}# {n}{Environment.NewLine}") + : String.Empty; + } + + internal class ProfileOutput + { + public string ProfileName { get; } + + public ProfileOutput(string profileName) + { + ProfileName = profileName; + } + + public override string ToString() => ProfileName != NoProfiles ? $"[{typeof(ProfileAttribute).ToPsAttributeType()}('{ProfileName}')]{Environment.NewLine}" : String.Empty; + } + + internal class DescriptionOutput + { + public string Description { get; } + + public DescriptionOutput(string description) + { + Description = description; + } + + public override string ToString() => !String.IsNullOrEmpty(Description) ? $"[{typeof(DescriptionAttribute).ToPsAttributeType()}('{Description.ToPsStringLiteral()}')]{Environment.NewLine}" : String.Empty; + } + + internal class ParameterCategoryOutput + { + public ParameterCategory Category { get; } + + public ParameterCategoryOutput(ParameterCategory category) + { + Category = category; + } + + public override string ToString() => $"{Indent}[{typeof(CategoryAttribute).ToPsAttributeType()}('{Category}')]{Environment.NewLine}"; + } + + internal class InfoOutput + { + public InfoAttribute Info { get; } + public Type ParameterType { get; } + + public InfoOutput(InfoAttribute info, Type parameterType) + { + Info = info; + ParameterType = parameterType; + } + + public override string ToString() + { + // Rendering of InfoAttribute members that are not used currently + /*var serializedNameText = Info.SerializedName != null ? $"SerializedName='{Info.SerializedName}'" : String.Empty; + var readOnlyText = Info.ReadOnly ? "ReadOnly" : String.Empty; + var descriptionText = !String.IsNullOrEmpty(Info.Description) ? $"Description='{Info.Description.ToPsStringLiteral()}'" : String.Empty;*/ + + var requiredText = Info.Required ? "Required" : String.Empty; + var unwrappedType = ParameterType.Unwrap(); + var hasValidPossibleTypes = Info.PossibleTypes.Any(pt => pt != unwrappedType); + var possibleTypesText = hasValidPossibleTypes + ? $"PossibleTypes=({Info.PossibleTypes.Select(pt => $"[{pt.ToPsType()}]").JoinIgnoreEmpty(ItemSeparator)})" + : String.Empty; + var propertyText = new[] { /*serializedNameText, */requiredText,/* readOnlyText,*/ possibleTypesText/*, descriptionText*/ }.JoinIgnoreEmpty(ItemSeparator); + return hasValidPossibleTypes ? $"{Indent}[{typeof(InfoAttribute).ToPsAttributeType()}({propertyText})]{Environment.NewLine}" : String.Empty; + } + } + + internal class PropertySyntaxOutput + { + public string ParameterName { get; } + public Type ParameterType { get; } + public bool IsMandatory { get; } + public int? Position { get; } + + public bool IncludeSpace { get; } + public bool IncludeDash { get; } + + public PropertySyntaxOutput(Parameter parameter) + { + ParameterName = parameter.ParameterName; + ParameterType = parameter.ParameterType; + IsMandatory = parameter.IsMandatory; + Position = parameter.Position; + IncludeSpace = true; + IncludeDash = true; + } + + public PropertySyntaxOutput(ComplexInterfaceInfo complexInterfaceInfo) + { + ParameterName = complexInterfaceInfo.Name; + ParameterType = complexInterfaceInfo.Type; + IsMandatory = complexInterfaceInfo.Required; + Position = null; + IncludeSpace = false; + IncludeDash = false; + } + + public override string ToString() + { + var leftOptional = !IsMandatory ? "[" : String.Empty; + var leftPositional = Position != null ? "[" : String.Empty; + var rightPositional = Position != null ? "]" : String.Empty; + var type = ParameterType != typeof(SwitchParameter) ? $" <{ParameterType.ToSyntaxTypeName()}>" : String.Empty; + var rightOptional = !IsMandatory ? "]" : String.Empty; + var space = IncludeSpace ? " " : String.Empty; + var dash = IncludeDash ? "-" : String.Empty; + return $"{space}{leftOptional}{leftPositional}{dash}{ParameterName}{rightPositional}{type}{rightOptional}"; + } + } + + internal static class PsProxyOutputExtensions + { + public const string NoParameters = "__NoParameters"; + + public const string AllParameterSets = "__AllParameterSets"; + + public const string HalfIndent = " "; + + public const string Indent = HalfIndent + HalfIndent; + + public const string ItemSeparator = ", "; + + public static readonly string ComplexParameterHeader = $"COMPLEX PARAMETER PROPERTIES{Environment.NewLine}{Environment.NewLine}To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.{Environment.NewLine}{Environment.NewLine}"; + + public static string ToPsBool(this bool value) => $"${value.ToString().ToLowerInvariant()}"; + + public static string ToPsType(this Type type) + { + var regex = new Regex(@"^(.*)`{1}\d+(.*)$"); + var typeText = type.ToString(); + var match = regex.Match(typeText); + return match.Success ? $"{match.Groups[1]}{match.Groups[2]}" : typeText; + } + + public static string ToPsAttributeType(this Type type) => type.ToPsType().RemoveEnd("Attribute"); + + // https://stackoverflow.com/a/5284606/294804 + private static string RemoveEnd(this string text, string suffix) => text.EndsWith(suffix) ? text.Substring(0, text.Length - suffix.Length) : text; + + public static string ToPsSingleLine(this string value, string replacer = " ") => value.ReplaceNewLines(replacer, new []{"
    ", "\r\n", "\n"}); + + public static string ToPsStringLiteral(this string value) => value?.Replace("'", "''").Replace("‘", "''").Replace("’", "''").ToPsSingleLine().Trim() ?? String.Empty; + + public static string JoinIgnoreEmpty(this IEnumerable values, string separator) => String.Join(separator, values?.Where(v => !String.IsNullOrEmpty(v))); + + // https://stackoverflow.com/a/41961738/294804 + public static string ToSyntaxTypeName(this Type type) + { + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + return $"{type.GetGenericArguments().First().ToSyntaxTypeName()}?"; + } + + if (type.IsGenericType) + { + var genericTypes = String.Join(ItemSeparator, type.GetGenericArguments().Select(ToSyntaxTypeName)); + return $"{type.Name.Split('`').First()}<{genericTypes}>"; + } + + return type.Name; + } + + public static OutputTypeOutput ToOutputTypeOutput(this IEnumerable outputTypes) => new OutputTypeOutput(outputTypes); + + public static CmdletBindingOutput ToCmdletBindingOutput(this VariantGroup variantGroup) => new CmdletBindingOutput(variantGroup); + + public static ParameterOutput ToParameterOutput(this Parameter parameter, bool hasMultipleVariantsInVariantGroup, bool hasAllVariantsInParameterGroup) => new ParameterOutput(parameter, hasMultipleVariantsInVariantGroup, hasAllVariantsInParameterGroup); + + public static AliasOutput ToAliasOutput(this string[] aliases, bool includeIndent = false) => new AliasOutput(aliases, includeIndent); + + public static ValidateNotNullOutput ToValidateNotNullOutput(this bool hasValidateNotNull) => new ValidateNotNullOutput(hasValidateNotNull); + + public static ArgumentCompleterOutput ToArgumentCompleterOutput(this CompleterInfo completerInfo) => new ArgumentCompleterOutput(completerInfo); + + public static DefaultInfoOutput ToDefaultInfoOutput(this ParameterGroup parameterGroup) => new DefaultInfoOutput(parameterGroup); + + public static ParameterTypeOutput ToParameterTypeOutput(this Type parameterType) => new ParameterTypeOutput(parameterType); + + public static ParameterNameOutput ToParameterNameOutput(this string parameterName, bool isLast) => new ParameterNameOutput(parameterName, isLast); + + public static BeginOutput ToBeginOutput(this VariantGroup variantGroup) => new BeginOutput(variantGroup); + + public static ProcessOutput ToProcessOutput(this VariantGroup variantGroup) => new ProcessOutput(); + + public static EndOutput ToEndOutput(this VariantGroup variantGroup) => new EndOutput(); + + public static HelpCommentOutput ToHelpCommentOutput(this VariantGroup variantGroup) => new HelpCommentOutput(variantGroup); + + public static ParameterDescriptionOutput ToParameterDescriptionOutput(this string description) => new ParameterDescriptionOutput(description); + + public static ProfileOutput ToProfileOutput(this string profileName) => new ProfileOutput(profileName); + + public static DescriptionOutput ToDescriptionOutput(this string description) => new DescriptionOutput(description); + + public static ParameterCategoryOutput ToParameterCategoryOutput(this ParameterCategory category) => new ParameterCategoryOutput(category); + + public static PropertySyntaxOutput ToPropertySyntaxOutput(this Parameter parameter) => new PropertySyntaxOutput(parameter); + + public static PropertySyntaxOutput ToPropertySyntaxOutput(this ComplexInterfaceInfo complexInterfaceInfo) => new PropertySyntaxOutput(complexInterfaceInfo); + + public static InfoOutput ToInfoOutput(this InfoAttribute info, Type parameterType) => new InfoOutput(info, parameterType); + + public static string ToNoteOutput(this ComplexInterfaceInfo complexInterfaceInfo, string currentIndent = "", bool includeDashes = false, bool includeBackticks = false, bool isFirst = true) + { + string RenderProperty(ComplexInterfaceInfo info, string indent, bool dash, bool backtick) => + $"{indent}{(dash ? "- " : String.Empty)}{(backtick ? "`" : String.Empty)}{info.ToPropertySyntaxOutput()}{(backtick ? "`" : String.Empty)}: {info.Description}"; + + var nested = complexInterfaceInfo.NestedInfos.Select(ni => + { + var nestedIndent = $"{currentIndent}{HalfIndent}"; + return ni.IsComplexInterface + ? ni.ToNoteOutput(nestedIndent, includeDashes, includeBackticks, false) + : RenderProperty(ni, nestedIndent, includeDashes, includeBackticks); + }).Prepend(RenderProperty(complexInterfaceInfo, currentIndent, !isFirst && includeDashes, !isFirst && includeBackticks)); + return String.Join(Environment.NewLine, nested); + } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyTypes.cs b/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyTypes.cs new file mode 100644 index 000000000000..8ef370f65af9 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/Models/PsProxyTypes.cs @@ -0,0 +1,499 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using System.Reflection; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyOutputExtensions; +using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell.PsProxyTypeExtensions; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal class ProfileGroup + { + public string ProfileName { get; } + public Variant[] Variants { get; } + public string ProfileFolder { get; } + + public ProfileGroup(Variant[] variants, string profileName = NoProfiles) + { + ProfileName = profileName; + Variants = variants; + ProfileFolder = ProfileName != NoProfiles ? ProfileName : String.Empty; + } + } + + internal class VariantGroup + { + public string ModuleName { get; } + public string CmdletName { get; } + public string CmdletVerb { get; } + public string CmdletNoun { get; } + public string ProfileName { get; } + public Variant[] Variants { get; } + public ParameterGroup[] ParameterGroups { get; } + public ComplexInterfaceInfo[] ComplexInterfaceInfos { get; } + + public string[] Aliases { get; } + public PSTypeName[] OutputTypes { get; } + public bool SupportsShouldProcess { get; } + public bool SupportsPaging { get; } + public string DefaultParameterSetName { get; } + public bool HasMultipleVariants { get; } + public PsHelpInfo HelpInfo { get; } + public bool IsGenerated { get; } + public bool IsInternal { get; } + + public string OutputFolder { get; } + public string FileName { get; } + public string FilePath { get; } + + public CommentInfo CommentInfo { get; } + + public VariantGroup(string moduleName, string cmdletName, Variant[] variants, string outputFolder, string profileName = NoProfiles, bool isTest = false, bool isInternal = false) + { + ModuleName = moduleName; + CmdletName = cmdletName; + var cmdletNameParts = CmdletName.Split('-'); + CmdletVerb = cmdletNameParts.First(); + CmdletNoun = cmdletNameParts.Last(); + ProfileName = profileName; + Variants = variants; + ParameterGroups = Variants.ToParameterGroups().OrderBy(pg => pg.OrderCategory).ThenByDescending(pg => pg.IsMandatory).ToArray(); + var aliasDuplicates = ParameterGroups.SelectMany(pg => pg.Aliases) + //https://stackoverflow.com/a/18547390/294804 + .GroupBy(a => a).Where(g => g.Count() > 1).Select(g => g.Key).ToArray(); + if (aliasDuplicates.Any()) + { + throw new ParsingMetadataException($"The alias(es) [{String.Join(", ", aliasDuplicates)}] are defined on multiple parameters for cmdlet '{CmdletName}', which is not supported."); + } + ComplexInterfaceInfos = ParameterGroups.Where(pg => !pg.DontShow && pg.IsComplexInterface).OrderBy(pg => pg.ParameterName).Select(pg => pg.ComplexInterfaceInfo).ToArray(); + + Aliases = Variants.SelectMany(v => v.Attributes).ToAliasNames().ToArray(); + OutputTypes = Variants.SelectMany(v => v.Info.OutputType).Where(ot => ot.Type != null).GroupBy(ot => ot.Type).Select(otg => otg.First()).ToArray(); + SupportsShouldProcess = Variants.Any(v => v.SupportsShouldProcess); + SupportsPaging = Variants.Any(v => v.SupportsPaging); + DefaultParameterSetName = DetermineDefaultParameterSetName(); + HasMultipleVariants = Variants.Length > 1; + HelpInfo = Variants.Select(v => v.HelpInfo).FirstOrDefault() ?? new PsHelpInfo(); + IsGenerated = Variants.All(v => v.Attributes.OfType().Any()); + IsInternal = isInternal; + + OutputFolder = outputFolder; + FileName = $"{CmdletName}{(isTest ? ".Tests" : String.Empty)}.ps1"; + FilePath = Path.Combine(OutputFolder, FileName); + + CommentInfo = new CommentInfo(this); + } + + private string DetermineDefaultParameterSetName() + { + var defaultParameterSet = Variants + .Select(v => v.Metadata.DefaultParameterSetName) + .LastOrDefault(dpsn => dpsn.IsValidDefaultParameterSetName()); + + if (String.IsNullOrEmpty(defaultParameterSet)) + { + var variantParamCountGroups = Variants + .Select(v => ( + variant: v.VariantName, + paramCount: v.CmdletOnlyParameters.Count(p => p.IsMandatory), + isSimple: v.CmdletOnlyParameters.Where(p => p.IsMandatory).All(p => p.ParameterType.IsPsSimple()))) + .GroupBy(vpc => vpc.isSimple) + .ToArray(); + var variantParameterCounts = (variantParamCountGroups.Any(g => g.Key) ? variantParamCountGroups.Where(g => g.Key) : variantParamCountGroups).SelectMany(g => g).ToArray(); + var smallestParameterCount = variantParameterCounts.Min(vpc => vpc.paramCount); + defaultParameterSet = variantParameterCounts.First(vpc => vpc.paramCount == smallestParameterCount).variant; + } + + return defaultParameterSet; + } + } + + internal class Variant + { + public string CmdletName { get; } + public string VariantName { get; } + public CommandInfo Info { get; } + public CommandMetadata Metadata { get; } + public PsHelpInfo HelpInfo { get; } + public bool HasParameterSets { get; } + public bool IsFunction { get; } + public string PrivateModuleName { get; } + public string PrivateCmdletName { get; } + public bool SupportsShouldProcess { get; } + public bool SupportsPaging { get; } + + public Attribute[] Attributes { get; } + public Parameter[] Parameters { get; } + public Parameter[] CmdletOnlyParameters { get; } + public bool IsInternal { get; } + public bool IsDoNotExport { get; } + public string[] Profiles { get; } + + public Variant(string cmdletName, string variantName, CommandInfo info, CommandMetadata metadata, bool hasParameterSets = false, PsHelpInfo helpInfo = null) + { + CmdletName = cmdletName; + VariantName = variantName; + Info = info; + HelpInfo = helpInfo ?? new PsHelpInfo(); + Metadata = metadata; + HasParameterSets = hasParameterSets; + IsFunction = Info.CommandType == CommandTypes.Function; + PrivateModuleName = Info.Source; + PrivateCmdletName = Metadata.Name; + SupportsShouldProcess = Metadata.SupportsShouldProcess; + SupportsPaging = Metadata.SupportsPaging; + + Attributes = this.ToAttributes(); + Parameters = this.ToParameters().OrderBy(p => p.OrderCategory).ThenByDescending(p => p.IsMandatory).ToArray(); + IsInternal = Attributes.OfType().Any(); + IsDoNotExport = Attributes.OfType().Any(); + CmdletOnlyParameters = Parameters.Where(p => !p.Categories.Any(c => c == ParameterCategory.Azure || c == ParameterCategory.Runtime)).ToArray(); + Profiles = Attributes.OfType().SelectMany(pa => pa.Profiles).ToArray(); + } + } + + internal class ParameterGroup + { + public string ParameterName { get; } + public Parameter[] Parameters { get; } + + public string[] VariantNames { get; } + public string[] AllVariantNames { get; } + public bool HasAllVariants { get; } + public Type ParameterType { get; } + public string Description { get; } + + public string[] Aliases { get; } + public bool HasValidateNotNull { get; } + public CompleterInfo CompleterInfo { get; } + public DefaultInfo DefaultInfo { get; } + public bool HasDefaultInfo { get; } + public ParameterCategory OrderCategory { get; } + public bool DontShow { get; } + public bool IsMandatory { get; } + public bool SupportsWildcards { get; } + public bool IsComplexInterface { get; } + public ComplexInterfaceInfo ComplexInterfaceInfo { get; } + public InfoAttribute InfoAttribute { get; } + + public int? FirstPosition { get; } + public bool ValueFromPipeline { get; } + public bool ValueFromPipelineByPropertyName { get; } + public bool IsInputType { get; } + + public ParameterGroup(string parameterName, Parameter[] parameters, string[] allVariantNames) + { + ParameterName = parameterName; + Parameters = parameters; + + VariantNames = Parameters.Select(p => p.VariantName).ToArray(); + AllVariantNames = allVariantNames; + HasAllVariants = VariantNames.Any(vn => vn == AllParameterSets) || !AllVariantNames.Except(VariantNames).Any(); + var types = Parameters.Select(p => p.ParameterType).Distinct().ToArray(); + if (types.Length > 1) + { + throw new ParsingMetadataException($"The parameter '{ParameterName}' has multiple parameter types [{String.Join(", ", types.Select(t => t.Name))}] defined, which is not supported."); + } + ParameterType = types.First(); + Description = Parameters.Select(p => p.Description).FirstOrDefault(d => !String.IsNullOrEmpty(d)).EmptyIfNull(); + + Aliases = Parameters.SelectMany(p => p.Attributes).ToAliasNames().ToArray(); + HasValidateNotNull = Parameters.SelectMany(p => p.Attributes.OfType()).Any(); + CompleterInfo = Parameters.Select(p => p.CompleterInfoAttribute).FirstOrDefault()?.ToCompleterInfo() + ?? Parameters.Select(p => p.ArgumentCompleterAttribute).FirstOrDefault()?.ToCompleterInfo(); + DefaultInfo = Parameters.Select(p => p.DefaultInfoAttribute).FirstOrDefault()?.ToDefaultInfo(this) + ?? Parameters.Select(p => p.DefaultValueAttribute).FirstOrDefault(dv => dv != null)?.ToDefaultInfo(this); + HasDefaultInfo = DefaultInfo != null && !String.IsNullOrEmpty(DefaultInfo.Script); + // When DefaultInfo is present, force all parameters from this group to be optional. + if (HasDefaultInfo) + { + foreach (var parameter in Parameters) + { + parameter.IsMandatory = false; + } + } + OrderCategory = Parameters.Select(p => p.OrderCategory).Distinct().DefaultIfEmpty(ParameterCategory.Body).Min(); + DontShow = Parameters.All(p => p.DontShow); + IsMandatory = HasAllVariants && Parameters.Any(p => p.IsMandatory); + SupportsWildcards = Parameters.Any(p => p.SupportsWildcards); + IsComplexInterface = Parameters.Any(p => p.IsComplexInterface); + ComplexInterfaceInfo = Parameters.Where(p => p.IsComplexInterface).Select(p => p.ComplexInterfaceInfo).FirstOrDefault(); + InfoAttribute = Parameters.Select(p => p.InfoAttribute).First(); + + FirstPosition = Parameters.Select(p => p.Position).FirstOrDefault(p => p != null); + ValueFromPipeline = Parameters.Any(p => p.ValueFromPipeline); + ValueFromPipelineByPropertyName = Parameters.Any(p => p.ValueFromPipelineByPropertyName); + IsInputType = ValueFromPipeline || ValueFromPipelineByPropertyName; + } + } + + internal class Parameter + { + public string VariantName { get; } + public string ParameterName { get; } + public ParameterMetadata Metadata { get; } + public PsParameterHelpInfo HelpInfo { get; } + public Type ParameterType { get; } + + public Attribute[] Attributes { get; } + public ParameterCategory[] Categories { get; } + public ParameterCategory OrderCategory { get; } + public PSDefaultValueAttribute DefaultValueAttribute { get; } + public DefaultInfoAttribute DefaultInfoAttribute { get; } + public ParameterAttribute ParameterAttribute { get; } + public bool SupportsWildcards { get; } + public CompleterInfoAttribute CompleterInfoAttribute { get; } + public ArgumentCompleterAttribute ArgumentCompleterAttribute { get; } + + public bool ValueFromPipeline { get; } + public bool ValueFromPipelineByPropertyName { get; } + public int? Position { get; } + public bool DontShow { get; } + public bool IsMandatory { get; set; } + + public InfoAttribute InfoAttribute { get; } + public ComplexInterfaceInfo ComplexInterfaceInfo { get; } + public bool IsComplexInterface { get; } + public string Description { get; } + + public Parameter(string variantName, string parameterName, ParameterMetadata metadata, PsParameterHelpInfo helpInfo = null) + { + VariantName = variantName; + ParameterName = parameterName; + Metadata = metadata; + HelpInfo = helpInfo ?? new PsParameterHelpInfo(); + + Attributes = Metadata.Attributes.ToArray(); + ParameterType = Attributes.OfType().FirstOrDefault()?.Type ?? Metadata.ParameterType; + Categories = Attributes.OfType().SelectMany(ca => ca.Categories).Distinct().ToArray(); + OrderCategory = Categories.DefaultIfEmpty(ParameterCategory.Body).Min(); + DefaultValueAttribute = Attributes.OfType().FirstOrDefault(); + DefaultInfoAttribute = Attributes.OfType().FirstOrDefault(); + ParameterAttribute = Attributes.OfType().FirstOrDefault(pa => pa.ParameterSetName == VariantName || pa.ParameterSetName == AllParameterSets); + if (ParameterAttribute == null) + { + throw new ParsingMetadataException($"The variant '{VariantName}' has multiple parameter sets defined, which is not supported."); + } + SupportsWildcards = Attributes.OfType().Any(); + CompleterInfoAttribute = Attributes.OfType().FirstOrDefault(); + ArgumentCompleterAttribute = Attributes.OfType().FirstOrDefault(); + + ValueFromPipeline = ParameterAttribute.ValueFromPipeline; + ValueFromPipelineByPropertyName = ParameterAttribute.ValueFromPipelineByPropertyName; + Position = ParameterAttribute.Position == Int32.MinValue ? (int?)null : ParameterAttribute.Position; + DontShow = ParameterAttribute.DontShow; + IsMandatory = ParameterAttribute.Mandatory; + + var complexParameterName = ParameterName.ToUpperInvariant(); + var complexMessage = $"{Environment.NewLine}To construct, see NOTES section for {complexParameterName} properties and create a hash table."; + var description = ParameterAttribute.HelpMessage.NullIfEmpty() ?? HelpInfo.Description.NullIfEmpty() ?? InfoAttribute?.Description.NullIfEmpty() ?? String.Empty; + // Remove the complex type message as it will be reinserted if this is a complex type + description = description.NormalizeNewLines().Replace(complexMessage, String.Empty).Replace(complexMessage.ToPsSingleLine(), String.Empty); + // Make an InfoAttribute for processing only if one isn't provided + InfoAttribute = Attributes.OfType().FirstOrDefault() ?? new InfoAttribute { PossibleTypes = new[] { ParameterType.Unwrap() }, Required = IsMandatory }; + // Set the description if the InfoAttribute does not have one since they are exported without a description + InfoAttribute.Description = String.IsNullOrEmpty(InfoAttribute.Description) ? description : InfoAttribute.Description; + ComplexInterfaceInfo = InfoAttribute.ToComplexInterfaceInfo(complexParameterName, ParameterType, true); + IsComplexInterface = ComplexInterfaceInfo.IsComplexInterface; + Description = $"{description}{(IsComplexInterface ? complexMessage : String.Empty)}"; + } + } + + internal class ComplexInterfaceInfo + { + public InfoAttribute InfoAttribute { get; } + + public string Name { get; } + public Type Type { get; } + public bool Required { get; } + public bool ReadOnly { get; } + public string Description { get; } + + public ComplexInterfaceInfo[] NestedInfos { get; } + public bool IsComplexInterface { get; } + + public ComplexInterfaceInfo(string name, Type type, InfoAttribute infoAttribute, bool? required, List seenTypes) + { + Name = name; + Type = type; + InfoAttribute = infoAttribute; + + Required = required ?? InfoAttribute.Required; + ReadOnly = InfoAttribute.ReadOnly; + Description = InfoAttribute.Description.ToPsSingleLine(); + + var unwrappedType = Type.Unwrap(); + var hasBeenSeen = seenTypes?.Contains(unwrappedType) ?? false; + (seenTypes ?? (seenTypes = new List())).Add(unwrappedType); + NestedInfos = hasBeenSeen ? new ComplexInterfaceInfo[]{} : + unwrappedType.GetInterfaces() + .Concat(InfoAttribute.PossibleTypes) + .SelectMany(pt => pt.GetProperties() + .SelectMany(pi => pi.GetCustomAttributes(true).OfType() + .Select(ia => ia.ToComplexInterfaceInfo(pi.Name, pi.PropertyType, seenTypes: seenTypes)))) + .Where(cii => !cii.ReadOnly).OrderByDescending(cii => cii.Required).ToArray(); + // https://stackoverflow.com/a/503359/294804 + var associativeArrayInnerType = Type.GetInterfaces() + .FirstOrDefault(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAssociativeArray<>)) + ?.GetTypeInfo().GetGenericArguments().First(); + if (!hasBeenSeen && associativeArrayInnerType != null) + { + var anyInfo = new InfoAttribute { Description = "This indicates any property can be added to this object." }; + NestedInfos = NestedInfos.Prepend(anyInfo.ToComplexInterfaceInfo("(Any)", associativeArrayInnerType)).ToArray(); + } + IsComplexInterface = NestedInfos.Any(); + } + } + + internal class CommentInfo + { + public string Description { get; } + public string Synopsis { get; } + + public string[] Examples { get; } + public string[] Inputs { get; } + public string[] Outputs { get; } + + public string OnlineVersion { get; } + public string[] RelatedLinks { get; } + + private const string HelpLinkPrefix = @"https://docs.microsoft.com/en-us/powershell/module/"; + + public CommentInfo(VariantGroup variantGroup) + { + var helpInfo = variantGroup.HelpInfo; + Description = variantGroup.Variants.SelectMany(v => v.Attributes).OfType().FirstOrDefault()?.Description.NullIfEmpty() + ?? helpInfo.Description.EmptyIfNull(); + // If there is no Synopsis, PowerShell may put in the Syntax string as the Synopsis. This seems unintended, so we remove the Synopsis in this situation. + var synopsis = helpInfo.Synopsis.EmptyIfNull().Trim().StartsWith(variantGroup.CmdletName) ? String.Empty : helpInfo.Synopsis; + Synopsis = synopsis.NullIfEmpty() ?? Description; + + Examples = helpInfo.Examples.Select(rl => rl.Code).ToArray(); + + Inputs = (variantGroup.ParameterGroups.Where(pg => pg.IsInputType).Select(pg => pg.ParameterType.FullName).ToArray().NullIfEmpty() ?? + helpInfo.InputTypes.Where(it => it.Name.NullIfWhiteSpace() != null).Select(it => it.Name).ToArray()) + .Where(i => i != "None").Distinct().OrderBy(i => i).ToArray(); + Outputs = (variantGroup.OutputTypes.Select(ot => ot.Type.FullName).ToArray().NullIfEmpty() ?? + helpInfo.OutputTypes.Where(it => it.Name.NullIfWhiteSpace() != null).Select(ot => ot.Name).ToArray()) + .Where(o => o != "None").Distinct().OrderBy(o => o).ToArray(); + + OnlineVersion = helpInfo.OnlineVersion?.Uri.NullIfEmpty() ?? $@"{HelpLinkPrefix}{variantGroup.ModuleName.ToLowerInvariant()}/{variantGroup.CmdletName.ToLowerInvariant()}"; + RelatedLinks = helpInfo.RelatedLinks.Select(rl => rl.Text).ToArray(); + } + } + + internal class CompleterInfo + { + public string Name { get; } + public string Description { get; } + public string Script { get; } + public Type Type { get; } + public bool IsTypeCompleter { get; } + + public CompleterInfo(CompleterInfoAttribute infoAttribute) + { + Name = infoAttribute.Name; + Description = infoAttribute.Description; + Script = infoAttribute.Script; + } + + public CompleterInfo(ArgumentCompleterAttribute completerAttribute) + { + Script = completerAttribute.ScriptBlock?.ToString(); + if (completerAttribute.Type != null) + { + Type = completerAttribute.Type; + IsTypeCompleter = true; + } + } + } + + internal class DefaultInfo + { + public string Name { get; } + public string Description { get; } + public string Script { get; } + public ParameterGroup ParameterGroup { get; } + + public DefaultInfo(DefaultInfoAttribute infoAttribute, ParameterGroup parameterGroup) + { + Name = infoAttribute.Name; + Description = infoAttribute.Description; + Script = infoAttribute.Script; + ParameterGroup = parameterGroup; + } + + public DefaultInfo(PSDefaultValueAttribute defaultValueAttribute, ParameterGroup parameterGroup) + { + Description = defaultValueAttribute.Help; + ParameterGroup = parameterGroup; + if (defaultValueAttribute.Value != null) + { + Script = defaultValueAttribute.Value.ToString(); + } + } + } + + internal static class PsProxyTypeExtensions + { + public const string NoProfiles = "__NoProfiles"; + + public static bool IsValidDefaultParameterSetName(this string parameterSetName) => + !String.IsNullOrEmpty(parameterSetName) && parameterSetName != AllParameterSets; + + public static Variant[] ToVariants(this CommandInfo info, PsHelpInfo helpInfo) + { + var metadata = new CommandMetadata(info); + var privateCmdletName = metadata.Name.Split('!').First(); + var parts = privateCmdletName.Split('_'); + return parts.Length > 1 + ? new[] { new Variant(parts[0], parts[1], info, metadata, helpInfo: helpInfo) } + // Process multiple parameter sets, so we declare a variant per parameter set. + : info.ParameterSets.Select(ps => new Variant(privateCmdletName, ps.Name, info, metadata, true, helpInfo)).ToArray(); + } + + public static Variant[] ToVariants(this CmdletAndHelpInfo info) => info.CommandInfo.ToVariants(info.HelpInfo); + + public static Variant[] ToVariants(this CommandInfo info, PSObject helpInfo = null) => info.ToVariants(helpInfo?.ToPsHelpInfo()); + + public static Parameter[] ToParameters(this Variant variant) + { + var parameters = variant.Metadata.Parameters.AsEnumerable(); + var parameterHelp = variant.HelpInfo.Parameters.AsEnumerable(); + if (variant.HasParameterSets) + { + parameters = parameters.Where(p => p.Value.ParameterSets.Keys.Any(k => k == variant.VariantName || k == AllParameterSets)); + parameterHelp = parameterHelp.Where(ph => !ph.ParameterSetNames.Any() || ph.ParameterSetNames.Any(psn => psn == variant.VariantName || psn == AllParameterSets)); + } + return parameters.Select(p => new Parameter(variant.VariantName, p.Key, p.Value, parameterHelp.FirstOrDefault(ph => ph.Name == p.Key))).ToArray(); + } + + public static Attribute[] ToAttributes(this Variant variant) => variant.IsFunction + ? ((FunctionInfo)variant.Info).ScriptBlock.Attributes.ToArray() + : variant.Metadata.CommandType.GetCustomAttributes(false).Cast().ToArray(); + + public static IEnumerable ToParameterGroups(this Variant[] variants) + { + var allVariantNames = variants.Select(vg => vg.VariantName).ToArray(); + return variants + .SelectMany(v => v.Parameters) + .GroupBy(p => p.ParameterName, StringComparer.InvariantCultureIgnoreCase) + .Select(pg => new ParameterGroup(pg.Key, pg.Select(p => p).ToArray(), allVariantNames)); + } + + public static ComplexInterfaceInfo ToComplexInterfaceInfo(this InfoAttribute infoAttribute, string name, Type type, bool? required = null, List seenTypes = null) + => new ComplexInterfaceInfo(name, type, infoAttribute, required, seenTypes); + + public static CompleterInfo ToCompleterInfo(this CompleterInfoAttribute infoAttribute) => new CompleterInfo(infoAttribute); + public static CompleterInfo ToCompleterInfo(this ArgumentCompleterAttribute completerAttribute) => new CompleterInfo(completerAttribute); + + public static DefaultInfo ToDefaultInfo(this DefaultInfoAttribute infoAttribute, ParameterGroup parameterGroup) => new DefaultInfo(infoAttribute, parameterGroup); + public static DefaultInfo ToDefaultInfo(this PSDefaultValueAttribute defaultValueAttribute, ParameterGroup parameterGroup) => new DefaultInfo(defaultValueAttribute, parameterGroup); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/PsAttributes.cs b/src/DataProtection/generated/runtime/BuildTime/PsAttributes.cs new file mode 100644 index 000000000000..f8071c2ac83f --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/PsAttributes.cs @@ -0,0 +1,114 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection +{ + [AttributeUsage(AttributeTargets.Class)] + public class DescriptionAttribute : Attribute + { + public string Description { get; } + + public DescriptionAttribute(string description) + { + Description = description; + } + } + + [AttributeUsage(AttributeTargets.Class)] + public class DoNotExportAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class)] + public class InternalExportAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class)] + public class GeneratedAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property)] + public class DoNotFormatAttribute : Attribute + { + } + + [AttributeUsage(AttributeTargets.Class)] + public class ProfileAttribute : Attribute + { + public string[] Profiles { get; } + + public ProfileAttribute(params string[] profiles) + { + Profiles = profiles; + } + } + + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public class CategoryAttribute : Attribute + { + public ParameterCategory[] Categories { get; } + + public CategoryAttribute(params ParameterCategory[] categories) + { + Categories = categories; + } + } + + [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] + public class ExportAsAttribute : Attribute + { + public Type Type { get; set; } + + public ExportAsAttribute(Type type) + { + Type = type; + } + } + + public enum ParameterCategory + { + // Note: Order is significant + Uri = 0, + Path, + Query, + Header, + Cookie, + Body, + Azure, + Runtime + } + + [AttributeUsage(AttributeTargets.Property)] + public class OriginAttribute : Attribute + { + public PropertyOrigin Origin { get; } + + public OriginAttribute(PropertyOrigin origin) + { + Origin = origin; + } + } + + public enum PropertyOrigin + { + // Note: Order is significant + Inherited = 0, + Owned, + Inlined + } + + [AttributeUsage(AttributeTargets.Property)] + public class FormatTableAttribute : Attribute + { + public int Index { get; set; } = -1; + public bool HasIndex => Index != -1; + public string Label { get; set; } + public int Width { get; set; } = -1; + public bool HasWidth => Width != -1; + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/PsExtensions.cs b/src/DataProtection/generated/runtime/BuildTime/PsExtensions.cs new file mode 100644 index 000000000000..ce34c7cada9a --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/PsExtensions.cs @@ -0,0 +1,160 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; +using System.Reflection; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class PsExtensions + { + // https://stackoverflow.com/a/863944/294804 + // https://stackoverflow.com/a/4452598/294804 + // https://stackoverflow.com/a/28701974/294804 + // Note: This will unwrap nested collections, but we don't generate nested collections. + public static Type Unwrap(this Type type) + { + if (type.IsArray) + { + return type.GetElementType().Unwrap(); + } + + var typeInfo = type.GetTypeInfo(); + if (typeInfo.IsGenericType + && (typeInfo.GetGenericTypeDefinition() == typeof(Nullable<>) || typeof(IEnumerable<>).IsAssignableFrom(type))) + { + return typeInfo.GetGenericArguments().First().Unwrap(); + } + + return type; + } + + // https://stackoverflow.com/a/863944/294804 + private static bool IsSimple(this Type type) + { + var typeInfo = type.GetTypeInfo(); + return typeInfo.IsPrimitive + || typeInfo.IsEnum + || type == typeof(string) + || type == typeof(decimal); + } + + // https://stackoverflow.com/a/32025393/294804 + private static bool HasImplicitConversion(this Type baseType, Type targetType) => + baseType.GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(mi => mi.Name == "op_Implicit" && mi.ReturnType == targetType) + .Any(mi => mi.GetParameters().FirstOrDefault()?.ParameterType == baseType); + + public static bool IsPsSimple(this Type type) + { + var unwrappedType = type.Unwrap(); + return unwrappedType.IsSimple() + || unwrappedType == typeof(SwitchParameter) + || unwrappedType == typeof(Hashtable) + || unwrappedType == typeof(PSCredential) + || unwrappedType == typeof(ScriptBlock) + || unwrappedType == typeof(DateTime) + || unwrappedType == typeof(Uri) + || unwrappedType.HasImplicitConversion(typeof(string)); + } + + public static string ToPsList(this IEnumerable items) => String.Join(", ", items.Select(i => $"'{i}'")); + + public static IEnumerable ToAliasNames(this IEnumerable attributes) => attributes.OfType().SelectMany(aa => aa.AliasNames).Distinct(); + + public static bool IsArrayAndElementTypeIsT(this object item) + { + var itemType = item.GetType(); + var tType = typeof(T); + return itemType.IsArray && !tType.IsArray && tType.IsAssignableFrom(itemType.GetElementType()); + } + + public static bool IsTArrayAndElementTypeIsItem(this object item) + { + var itemType = item.GetType(); + var tType = typeof(T); + return !itemType.IsArray && tType.IsArray && (tType.GetElementType()?.IsAssignableFrom(itemType) ?? false); + } + + public static bool IsTypeOrArrayOfType(this object item) => item is T || item.IsArrayAndElementTypeIsT() || item.IsTArrayAndElementTypeIsItem(); + + public static T NormalizeArrayType(this object item) + { + if (item is T result) + { + return result; + } + + if (item.IsArrayAndElementTypeIsT()) + { + var array = (T[])Convert.ChangeType(item, typeof(T[])); + return array.FirstOrDefault(); + } + + if (item.IsTArrayAndElementTypeIsItem()) + { + var tType = typeof(T); + var array = Array.CreateInstance(tType.GetElementType(), 1); + array.SetValue(item, 0); + return (T)Convert.ChangeType(array, tType); + } + + return default(T); + } + + public static T GetNestedProperty(this PSObject psObject, params string[] names) => psObject.Properties.GetNestedProperty(names); + + public static T GetNestedProperty(this PSMemberInfoCollection properties, params string[] names) + { + var lastName = names.Last(); + var nestedProperties = names.Take(names.Length - 1).Aggregate(properties, (p, n) => p?.GetProperty(n)?.Properties); + return nestedProperties != null ? nestedProperties.GetProperty(lastName) : default(T); + } + + public static T GetProperty(this PSObject psObject, string name) => psObject.Properties.GetProperty(name); + + public static T GetProperty(this PSMemberInfoCollection properties, string name) + { + switch (properties[name]?.Value) + { + case PSObject psObject when psObject.BaseObject is PSCustomObject && psObject.ImmediateBaseObject.IsTypeOrArrayOfType(): + return psObject.ImmediateBaseObject.NormalizeArrayType(); + case PSObject psObject when psObject.BaseObject.IsTypeOrArrayOfType(): + return psObject.BaseObject.NormalizeArrayType(); + case object value when value.IsTypeOrArrayOfType(): + return value.NormalizeArrayType(); + default: + return default(T); + } + } + + public static IEnumerable RunScript(this PSCmdlet cmdlet, string script) + => PsHelpers.RunScript(cmdlet.InvokeCommand, script); + + public static void RunScript(this PSCmdlet cmdlet, string script) + => cmdlet.RunScript(script); + + public static IEnumerable RunScript(this EngineIntrinsics engineIntrinsics, string script) + => PsHelpers.RunScript(engineIntrinsics.InvokeCommand, script); + + public static void RunScript(this EngineIntrinsics engineIntrinsics, string script) + => engineIntrinsics.RunScript(script); + + public static IEnumerable RunScript(this PSCmdlet cmdlet, ScriptBlock block) + => PsHelpers.RunScript(cmdlet.InvokeCommand, block.ToString()); + + public static void RunScript(this PSCmdlet cmdlet, ScriptBlock block) + => cmdlet.RunScript(block.ToString()); + + public static IEnumerable RunScript(this EngineIntrinsics engineIntrinsics, ScriptBlock block) + => PsHelpers.RunScript(engineIntrinsics.InvokeCommand, block.ToString()); + + public static void RunScript(this EngineIntrinsics engineIntrinsics, ScriptBlock block) + => engineIntrinsics.RunScript(block.ToString()); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/PsHelpers.cs b/src/DataProtection/generated/runtime/BuildTime/PsHelpers.cs new file mode 100644 index 000000000000..a372f682af96 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/PsHelpers.cs @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Management.Automation; +using Pwsh = System.Management.Automation.PowerShell; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class PsHelpers + { + public static IEnumerable RunScript(string script) + => Pwsh.Create().AddScript(script).Invoke(); + + public static void RunScript(string script) + => RunScript(script); + + public static IEnumerable RunScript(CommandInvocationIntrinsics cii, string script) + => cii.InvokeScript(script).Select(o => o?.BaseObject).Where(o => o != null).OfType(); + + public static void RunScript(CommandInvocationIntrinsics cii, string script) + => RunScript(cii, script); + + public static IEnumerable GetModuleCmdlets(PSCmdlet cmdlet, params string[] modulePaths) + { + var getCmdletsCommand = String.Join(" + ", modulePaths.Select(mp => $"(Get-Command -Module (Import-Module '{mp}' -PassThru))")); + return (cmdlet?.RunScript(getCmdletsCommand) ?? RunScript(getCmdletsCommand)) + .Where(ci => ci.CommandType != CommandTypes.Alias); + } + + public static IEnumerable GetModuleCmdlets(params string[] modulePaths) + => GetModuleCmdlets(null, modulePaths); + + public static IEnumerable GetScriptCmdlets(PSCmdlet cmdlet, string scriptFolder) + { + // https://stackoverflow.com/a/40969712/294804 + var getCmdletsCommand = $@" +$currentFunctions = Get-ChildItem function: +Get-ChildItem -Path '{scriptFolder}' -Recurse -Include '*.ps1' -File | ForEach-Object {{ . $_.FullName }} +Get-ChildItem function: | Where-Object {{ ($currentFunctions -notcontains $_) -and $_.CmdletBinding }} +"; + return cmdlet?.RunScript(getCmdletsCommand) ?? RunScript(getCmdletsCommand); + } + + public static IEnumerable GetScriptCmdlets(string scriptFolder) + => GetScriptCmdlets(null, scriptFolder); + + public static IEnumerable GetScriptHelpInfo(PSCmdlet cmdlet, params string[] modulePaths) + { + var importModules = String.Join(Environment.NewLine, modulePaths.Select(mp => $"Import-Module '{mp}'")); + var getHelpCommand = $@" +$currentFunctions = Get-ChildItem function: +{importModules} +Get-ChildItem function: | Where-Object {{ ($currentFunctions -notcontains $_) -and $_.CmdletBinding }} | ForEach-Object {{ Get-Help -Name $_.Name -Full }} +"; + return cmdlet?.RunScript(getHelpCommand) ?? RunScript(getHelpCommand); + } + + public static IEnumerable GetScriptHelpInfo(params string[] modulePaths) + => GetScriptHelpInfo(null, modulePaths); + + public static IEnumerable GetModuleCmdletsAndHelpInfo(PSCmdlet cmdlet, params string[] modulePaths) + { + var getCmdletAndHelp = String.Join(" + ", modulePaths.Select(mp => + $@"(Get-Command -Module (Import-Module '{mp}' -PassThru) | Where-Object {{ $_.CommandType -ne 'Alias' }} | ForEach-Object {{ @{{ CommandInfo = $_; HelpInfo = ( invoke-command {{ try {{ Get-Help -Name $_.Name -Full }} catch{{ '' }} }} ) }} }})" + )); + return (cmdlet?.RunScript(getCmdletAndHelp) ?? RunScript(getCmdletAndHelp)) + .Select(h => new CmdletAndHelpInfo { CommandInfo = (h["CommandInfo"] as PSObject)?.BaseObject as CommandInfo, HelpInfo = h["HelpInfo"] as PSObject }); + } + + public static IEnumerable GetModuleCmdletsAndHelpInfo(params string[] modulePaths) + => GetModuleCmdletsAndHelpInfo(null, modulePaths); + + public static CmdletAndHelpInfo ToCmdletAndHelpInfo(this CommandInfo commandInfo, PSObject helpInfo) => new CmdletAndHelpInfo { CommandInfo = commandInfo, HelpInfo = helpInfo }; + + public const string Psd1Indent = " "; + public const string GuidStart = Psd1Indent + "GUID"; + + public static Guid ReadGuidFromPsd1(string psd1Path) + { + var guid = Guid.NewGuid(); + if (File.Exists(psd1Path)) + { + var currentGuid = File.ReadAllLines(psd1Path) + .FirstOrDefault(l => l.StartsWith(GuidStart))?.Split(new[] { " = " }, StringSplitOptions.RemoveEmptyEntries) + .LastOrDefault()?.Replace("'", String.Empty); + guid = currentGuid != null ? Guid.Parse(currentGuid) : guid; + } + + return guid; + } + } + + internal class CmdletAndHelpInfo + { + public CommandInfo CommandInfo { get; set; } + public PSObject HelpInfo { get; set; } + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/StringExtensions.cs b/src/DataProtection/generated/runtime/BuildTime/StringExtensions.cs new file mode 100644 index 000000000000..e0650eb5cd52 --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/StringExtensions.cs @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Linq; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class StringExtensions + { + public static string NullIfEmpty(this string text) => String.IsNullOrEmpty(text) ? null : text; + public static string NullIfWhiteSpace(this string text) => String.IsNullOrWhiteSpace(text) ? null : text; + public static string EmptyIfNull(this string text) => text ?? String.Empty; + + public static bool? ToNullableBool(this string text) => String.IsNullOrEmpty(text) ? (bool?)null : Convert.ToBoolean(text.ToLowerInvariant()); + + public static string ToUpperFirstCharacter(this string text) => String.IsNullOrEmpty(text) ? text : $"{text[0].ToString().ToUpperInvariant()}{text.Remove(0, 1)}"; + + public static string ReplaceNewLines(this string value, string replacer = " ", string[] newLineSymbols = null) + => (newLineSymbols ?? new []{ "\r\n", "\n" }).Aggregate(value.EmptyIfNull(), (current, symbol) => current.Replace(symbol, replacer)); + public static string NormalizeNewLines(this string value) => value.ReplaceNewLines("\u00A0").Replace("\u00A0", Environment.NewLine); + } +} diff --git a/src/DataProtection/generated/runtime/BuildTime/XmlExtensions.cs b/src/DataProtection/generated/runtime/BuildTime/XmlExtensions.cs new file mode 100644 index 000000000000..7f1d210eb12e --- /dev/null +++ b/src/DataProtection/generated/runtime/BuildTime/XmlExtensions.cs @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.IO; +using System.Xml; +using System.Xml.Serialization; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class XmlExtensions + { + public static string ToXmlString(this T inputObject, bool excludeDeclaration = false) + { + var serializer = new XmlSerializer(typeof(T)); + //https://stackoverflow.com/a/760290/294804 + //https://stackoverflow.com/a/3732234/294804 + var namespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); + var xmlSettings = new XmlWriterSettings { OmitXmlDeclaration = excludeDeclaration, Indent = true }; + using (var stringWriter = new StringWriter()) + using (var xmlWriter = XmlWriter.Create(stringWriter, xmlSettings)) + { + serializer.Serialize(xmlWriter, inputObject, namespaces); + return stringWriter.ToString(); + } + } + } +} diff --git a/src/DataProtection/generated/runtime/CmdInfoHandler.cs b/src/DataProtection/generated/runtime/CmdInfoHandler.cs new file mode 100644 index 000000000000..698b8a743c77 --- /dev/null +++ b/src/DataProtection/generated/runtime/CmdInfoHandler.cs @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Management.Automation; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using NextDelegate = Func, Task>, Task>; + using SignalDelegate = Func, Task>; + + public class CmdInfoHandler + { + private readonly string processRecordId; + private readonly string parameterSetName; + private readonly InvocationInfo invocationInfo; + + public CmdInfoHandler(string processRecordId, InvocationInfo invocationInfo, string parameterSetName) + { + this.processRecordId = processRecordId; + this.parameterSetName = parameterSetName; + this.invocationInfo = invocationInfo; + } + + public Task SendAsync(HttpRequestMessage request, CancellationToken token, Action cancel, SignalDelegate signal, NextDelegate next) + { + request.Headers.Add("x-ms-client-request-id", processRecordId); + request.Headers.Add("CommandName", invocationInfo?.InvocationName); + request.Headers.Add("FullCommandName", invocationInfo?.MyCommand?.Name); + request.Headers.Add("ParameterSetName", parameterSetName); + + // continue with pipeline. + return next(request, token, cancel, signal); + } + } +} diff --git a/src/DataProtection/generated/runtime/Conversions/ConversionException.cs b/src/DataProtection/generated/runtime/Conversions/ConversionException.cs new file mode 100644 index 000000000000..d9f9f5ba0f95 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/ConversionException.cs @@ -0,0 +1,17 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class ConversionException : Exception + { + internal ConversionException(string message) + : base(message) { } + + internal ConversionException(JsonNode node, Type targetType) + : base($"Cannot convert '{node.Type}' to a {targetType.Name}") { } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/IJsonConverter.cs b/src/DataProtection/generated/runtime/Conversions/IJsonConverter.cs new file mode 100644 index 000000000000..483aee242f32 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/IJsonConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal interface IJsonConverter + { + JsonNode ToJson(object value); + + object FromJson(JsonNode node); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/BinaryConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/BinaryConverter.cs new file mode 100644 index 000000000000..37a8d3cc4a3d --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/BinaryConverter.cs @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class BinaryConverter : JsonConverter + { + internal override JsonNode ToJson(byte[] value) => new XBinary(value); + + internal override byte[] FromJson(JsonNode node) + { + switch (node.Type) + { + case JsonType.String : return Convert.FromBase64String(node.ToString()); // Base64 Encoded + case JsonType.Binary : return ((XBinary)node).Value; + } + + throw new ConversionException(node, typeof(byte[])); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/BooleanConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/BooleanConverter.cs new file mode 100644 index 000000000000..afd596418484 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/BooleanConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class BooleanConverter : JsonConverter + { + internal override JsonNode ToJson(bool value) => new JsonBoolean(value); + + internal override bool FromJson(JsonNode node) => (bool)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeConverter.cs new file mode 100644 index 000000000000..473d613fbb7e --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeConverter.cs @@ -0,0 +1,18 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class DateTimeConverter : JsonConverter + { + internal override JsonNode ToJson(DateTime value) + { + return new JsonDate(value); + } + + internal override DateTime FromJson(JsonNode node) => (DateTime)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeOffsetConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeOffsetConverter.cs new file mode 100644 index 000000000000..26569ebf3617 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/DateTimeOffsetConverter.cs @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class DateTimeOffsetConverter : JsonConverter + { + internal override JsonNode ToJson(DateTimeOffset value) => new JsonDate(value); + + internal override DateTimeOffset FromJson(JsonNode node) => (DateTimeOffset)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/DecimalConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/DecimalConverter.cs new file mode 100644 index 000000000000..a9c482417a40 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/DecimalConverter.cs @@ -0,0 +1,16 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class DecimalConverter : JsonConverter + { + internal override JsonNode ToJson(decimal value) => new JsonNumber(value.ToString()); + + internal override decimal FromJson(JsonNode node) + { + return (decimal)node; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/DoubleConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/DoubleConverter.cs new file mode 100644 index 000000000000..18a7b34feb89 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/DoubleConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class DoubleConverter : JsonConverter + { + internal override JsonNode ToJson(double value) => new JsonNumber(value); + + internal override double FromJson(JsonNode node) => (double)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/EnumConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/EnumConverter.cs new file mode 100644 index 000000000000..edcd234f552a --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/EnumConverter.cs @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class EnumConverter : IJsonConverter + { + private readonly Type type; + + internal EnumConverter(Type type) + { + this.type = type ?? throw new ArgumentNullException(nameof(type)); + } + + public JsonNode ToJson(object value) => new JsonString(value.ToString()); + + public object FromJson(JsonNode node) + { + if (node.Type == JsonType.Number) + { + return Enum.ToObject(type, (int)node); + } + + return Enum.Parse(type, node.ToString(), ignoreCase: true); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/GuidConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/GuidConverter.cs new file mode 100644 index 000000000000..f03674a372b7 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/GuidConverter.cs @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class GuidConverter : JsonConverter + { + internal override JsonNode ToJson(Guid value) => new JsonString(value.ToString()); + + internal override Guid FromJson(JsonNode node) => (Guid)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/HashSet'1Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/HashSet'1Converter.cs new file mode 100644 index 000000000000..ef77bdce7980 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/HashSet'1Converter.cs @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Collections.Generic; +using System.Linq; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class HashSetConverter : JsonConverter> + { + internal override JsonNode ToJson(HashSet value) + { + return new XSet(value); + } + + internal override HashSet FromJson(JsonNode node) + { + var collection = node as ICollection; + + if (collection.Count == 0) return null; + + // TODO: Remove Linq depedency + return new HashSet(collection.Cast()); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/Int16Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/Int16Converter.cs new file mode 100644 index 000000000000..c16b38e319ef --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/Int16Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class Int16Converter : JsonConverter + { + internal override JsonNode ToJson(short value) => new JsonNumber(value); + + internal override short FromJson(JsonNode node) => (short)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/Int32Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/Int32Converter.cs new file mode 100644 index 000000000000..6554b744ded1 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/Int32Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class Int32Converter : JsonConverter + { + internal override JsonNode ToJson(int value) => new JsonNumber(value); + + internal override int FromJson(JsonNode node) => (int)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/Int64Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/Int64Converter.cs new file mode 100644 index 000000000000..42a047ff5cb6 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/Int64Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class Int64Converter : JsonConverter + { + internal override JsonNode ToJson(long value) => new JsonNumber(value); + + internal override long FromJson(JsonNode node) => (long)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/JsonArrayConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/JsonArrayConverter.cs new file mode 100644 index 000000000000..55c924f1bf71 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/JsonArrayConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class JsonArrayConverter : JsonConverter + { + internal override JsonNode ToJson(JsonArray value) => value; + + internal override JsonArray FromJson(JsonNode node) => (JsonArray)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/JsonObjectConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/JsonObjectConverter.cs new file mode 100644 index 000000000000..a4cfbd5ce825 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/JsonObjectConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class JsonObjectConverter : JsonConverter + { + internal override JsonNode ToJson(JsonObject value) => value; + + internal override JsonObject FromJson(JsonNode node) => (JsonObject)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/SingleConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/SingleConverter.cs new file mode 100644 index 000000000000..6869c6ed26a4 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/SingleConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class SingleConverter : JsonConverter + { + internal override JsonNode ToJson(float value) => new JsonNumber(value.ToString()); + + internal override float FromJson(JsonNode node) => (float)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/StringConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/StringConverter.cs new file mode 100644 index 000000000000..b8daa6dd8ed6 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/StringConverter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class StringConverter : JsonConverter + { + internal override JsonNode ToJson(string value) => new JsonString(value); + + internal override string FromJson(JsonNode node) => node.ToString(); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/TimeSpanConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/TimeSpanConverter.cs new file mode 100644 index 000000000000..97e5b35342cb --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/TimeSpanConverter.cs @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class TimeSpanConverter : JsonConverter + { + internal override JsonNode ToJson(TimeSpan value) => new JsonString(value.ToString()); + + internal override TimeSpan FromJson(JsonNode node) => (TimeSpan)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/UInt16Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/UInt16Converter.cs new file mode 100644 index 000000000000..de355806f5ab --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/UInt16Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class UInt16Converter : JsonConverter + { + internal override JsonNode ToJson(ushort value) => new JsonNumber(value); + + internal override ushort FromJson(JsonNode node) => (ushort)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/UInt32Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/UInt32Converter.cs new file mode 100644 index 000000000000..b534397b18c9 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/UInt32Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class UInt32Converter : JsonConverter + { + internal override JsonNode ToJson(uint value) => new JsonNumber(value); + + internal override uint FromJson(JsonNode node) => (uint)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/UInt64Converter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/UInt64Converter.cs new file mode 100644 index 000000000000..42cedbf90324 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/UInt64Converter.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class UInt64Converter : JsonConverter + { + internal override JsonNode ToJson(ulong value) => new JsonNumber(value.ToString()); + + internal override ulong FromJson(JsonNode node) => (ulong)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/Instances/UriConverter.cs b/src/DataProtection/generated/runtime/Conversions/Instances/UriConverter.cs new file mode 100644 index 000000000000..c11258b22b6a --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/Instances/UriConverter.cs @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class UriConverter : JsonConverter + { + internal override JsonNode ToJson(Uri value) => new JsonString(value.AbsoluteUri); + + internal override Uri FromJson(JsonNode node) => (Uri)node; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/JsonConverter.cs b/src/DataProtection/generated/runtime/Conversions/JsonConverter.cs new file mode 100644 index 000000000000..a34f03efc6b5 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/JsonConverter.cs @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public abstract class JsonConverter : IJsonConverter + { + internal abstract T FromJson(JsonNode node); + + internal abstract JsonNode ToJson(T value); + + #region IConverter + + object IJsonConverter.FromJson(JsonNode node) => FromJson(node); + + JsonNode IJsonConverter.ToJson(object value) => ToJson((T)value); + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/JsonConverterAttribute.cs b/src/DataProtection/generated/runtime/Conversions/JsonConverterAttribute.cs new file mode 100644 index 000000000000..f1324ad9da18 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/JsonConverterAttribute.cs @@ -0,0 +1,18 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class JsonConverterAttribute : Attribute + { + internal JsonConverterAttribute(Type type) + { + Converter = (IJsonConverter)Activator.CreateInstance(type); + } + + internal IJsonConverter Converter { get; } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/JsonConverterFactory.cs b/src/DataProtection/generated/runtime/Conversions/JsonConverterFactory.cs new file mode 100644 index 000000000000..7126d5779b5c --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/JsonConverterFactory.cs @@ -0,0 +1,91 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class JsonConverterFactory + { + private static readonly Dictionary converters = new Dictionary(); + + static JsonConverterFactory() + { + AddInternal(new BooleanConverter()); + AddInternal(new DateTimeConverter()); + AddInternal(new DateTimeOffsetConverter()); + AddInternal(new BinaryConverter()); + AddInternal(new DecimalConverter()); + AddInternal(new DoubleConverter()); + AddInternal(new GuidConverter()); + AddInternal(new Int16Converter()); + AddInternal(new Int32Converter()); + AddInternal(new Int64Converter()); + AddInternal(new SingleConverter()); + AddInternal(new StringConverter()); + AddInternal(new TimeSpanConverter()); + AddInternal(new UInt16Converter()); + AddInternal(new UInt32Converter()); + AddInternal(new UInt64Converter()); + AddInternal(new UriConverter()); + + // Hash sets + AddInternal(new HashSetConverter()); + AddInternal(new HashSetConverter()); + AddInternal(new HashSetConverter()); + AddInternal(new HashSetConverter()); + AddInternal(new HashSetConverter()); + AddInternal(new HashSetConverter()); + + // JSON + + AddInternal(new JsonObjectConverter()); + AddInternal(new JsonArrayConverter()); + } + + internal static Dictionary Instances => converters; + + internal static IJsonConverter Get(Type type) + { + var details = TypeDetails.Get(type); + + if (details.JsonConverter == null) + { + throw new ConversionException($"No converter found for '{type.Name}'."); + } + + return details.JsonConverter; + } + + internal static bool TryGet(Type type, out IJsonConverter converter) + { + var typeDetails = TypeDetails.Get(type); + + converter = typeDetails.JsonConverter; + + return converter != null; + } + + private static void AddInternal(JsonConverter converter) + => converters.Add(typeof(T), converter); + + private static void AddInternal(IJsonConverter converter) + => converters.Add(typeof(T), converter); + + internal static void Add(JsonConverter converter) + { + if (converter == null) + { + throw new ArgumentNullException(nameof(converter)); + } + + AddInternal(converter); + + var type = TypeDetails.Get(); + + type.JsonConverter = converter; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Conversions/StringLikeConverter.cs b/src/DataProtection/generated/runtime/Conversions/StringLikeConverter.cs new file mode 100644 index 000000000000..f776fdd42f49 --- /dev/null +++ b/src/DataProtection/generated/runtime/Conversions/StringLikeConverter.cs @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Reflection; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class StringLikeConverter : IJsonConverter + { + private readonly Type type; + private readonly MethodInfo parseMethod; + + internal StringLikeConverter(Type type) + { + this.type = type ?? throw new ArgumentNullException(nameof(type)); + this.parseMethod = StringLikeHelper.GetParseMethod(type); + } + + public object FromJson(JsonNode node) => + parseMethod.Invoke(null, new[] { node.ToString() }); + + public JsonNode ToJson(object value) => new JsonString(value.ToString()); + } + + internal static class StringLikeHelper + { + private static readonly Type[] parseMethodParamaterTypes = new[] { typeof(string) }; + + internal static bool IsStringLike(Type type) + { + return GetParseMethod(type) != null; + } + + internal static MethodInfo GetParseMethod(Type type) + { + MethodInfo method = type.GetMethod("Parse", parseMethodParamaterTypes); + + if (method?.IsPublic != true) return null; + + return method; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/IJsonSerializable.cs b/src/DataProtection/generated/runtime/Customizations/IJsonSerializable.cs new file mode 100644 index 000000000000..4f5b49c028d0 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/IJsonSerializable.cs @@ -0,0 +1,249 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json; +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + public interface IJsonSerializable + { + JsonNode ToJson(JsonObject container = null, SerializationMode serializationMode = SerializationMode.None); + } + internal static class JsonSerializable + { + /// + /// Serializes an enumerable and returns a JsonNode. + /// + /// an IEnumerable collection of items + /// A JsonNode that contains the collection of items serialized. + private static JsonNode ToJsonValue(System.Collections.IEnumerable enumerable) + { + if (enumerable != null) + { + // is it a byte array of some kind? + if (enumerable is System.Collections.Generic.IEnumerable byteEnumerable) + { + return new XBinary(System.Linq.Enumerable.ToArray(byteEnumerable)); + } + + var hasValues = false; + // just create an array of value nodes. + var result = new XNodeArray(); + foreach (var each in enumerable) + { + // we had at least one value. + hasValues = true; + + // try to serialize it. + var node = ToJsonValue(each); + if (null != node) + { + result.Add(node); + } + } + + // if we were able to add values, (or it was just empty), return it. + if (result.Count > 0 || !hasValues) + { + return result; + } + } + + // we couldn't serialize the values. Sorry. + return null; + } + + /// + /// Serializes a valuetype to a JsonNode. + /// + /// a ValueType (ie, a primitive, enum or struct) to be serialized + /// a JsonNode with the serialized value + private static JsonNode ToJsonValue(ValueType vValue) + { + // numeric type + if (vValue is SByte || vValue is Int16 || vValue is Int32 || vValue is Int64 || vValue is Byte || vValue is UInt16 || vValue is UInt32 || vValue is UInt64 || vValue is decimal || vValue is float || vValue is double) + { + return new JsonNumber(vValue.ToString()); + } + + // boolean type + if (vValue is bool bValue) + { + return new JsonBoolean(bValue); + } + + // dates + if (vValue is DateTime dtValue) + { + return new JsonDate(dtValue); + } + + // sorry, no idea. + return null; + } + /// + /// Attempts to serialize an object by using ToJson() or ToJsonString() if they exist. + /// + /// the object to be serialized. + /// the serialized JsonNode (if successful), otherwise, null + private static JsonNode TryToJsonValue(dynamic oValue) + { + object jsonValue = null; + dynamic v = oValue; + try + { + jsonValue = v.ToJson().ToString(); + } + catch + { + // no harm... + try + { + jsonValue = v.ToJsonString().ToString(); + } + catch + { + // no worries here either. + } + } + + // if we got something out, let's use it. + if (null != jsonValue) + { + // JsonNumber is really a literal json value. Just don't try to cast that back to an actual number, ok? + return new JsonNumber(jsonValue.ToString()); + } + + return null; + } + + /// + /// Serialize an object by using a variety of methods. + /// + /// the object to be serialized. + /// the serialized JsonNode (if successful), otherwise, null + internal static JsonNode ToJsonValue(object value) + { + // things that implement our interface are preferred. + if (value is Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IJsonSerializable jsonSerializable) + { + return jsonSerializable.ToJson(); + } + + // strings are easy. + if (value is string || value is char) + { + return new JsonString(value.ToString()); + } + + // value types are fairly straightforward (fallback to ToJson()/ToJsonString() or literal JsonString ) + if (value is System.ValueType vValue) + { + return ToJsonValue(vValue) ?? TryToJsonValue(vValue) ?? new JsonString(vValue.ToString()); + } + + // dictionaries are objects that should be able to serialize + if (value is System.Collections.Generic.IDictionary dictionary) + { + return Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.ToJson(dictionary, null); + } + + // enumerable collections are handled like arrays (again, fallback to ToJson()/ToJsonString() or literal JsonString) + if (value is System.Collections.IEnumerable enumerableValue) + { + // some kind of enumerable value + return ToJsonValue(enumerableValue) ?? TryToJsonValue(value) ?? new JsonString(value.ToString()); + } + + // at this point, we're going to fallback to a string literal here, since we really have no idea what it is. + return new JsonString(value.ToString()); + } + + internal static JsonObject ToJson(System.Collections.Generic.Dictionary dictionary, JsonObject container) => ToJson((System.Collections.Generic.IDictionary)dictionary, container); + + /// + /// Serializes a dictionary into a JsonObject container. + /// + /// The dictionary to serailize + /// the container to serialize the dictionary into + /// the container + internal static JsonObject ToJson(System.Collections.Generic.IDictionary dictionary, JsonObject container) + { + container = container ?? new JsonObject(); + if (dictionary != null && dictionary.Count > 0) + { + foreach (var key in dictionary) + { + // currently, we don't serialize null values. + if (null != key.Value) + { + container.Add(key.Key, ToJsonValue(key.Value)); + continue; + } + } + } + return container; + } + + internal static Func> DeserializeDictionary(Func> dictionaryFactory) + { + return (node) => FromJson(node, dictionaryFactory(), (object)(DeserializeDictionary(dictionaryFactory)) as Func); + } + + internal static System.Collections.Generic.IDictionary FromJson(JsonObject json, System.Collections.Generic.Dictionary container, System.Func objectFactory, System.Collections.Generic.HashSet excludes = null) => FromJson(json, (System.Collections.Generic.IDictionary)container, objectFactory, excludes); + + + internal static System.Collections.Generic.IDictionary FromJson(JsonObject json, System.Collections.Generic.IDictionary container, System.Func objectFactory, System.Collections.Generic.HashSet excludes = null) + { + if (null == json) + { + return container; + } + + foreach (var key in json.Keys) + { + if (true == excludes?.Contains(key)) + { + continue; + } + + var value = json[key]; + try + { + switch (value.Type) + { + case JsonType.Null: + // skip null values. + continue; + + case JsonType.Array: + case JsonType.Boolean: + case JsonType.Date: + case JsonType.Binary: + case JsonType.Number: + case JsonType.String: + container.Add(key, (V)value.ToValue()); + break; + case JsonType.Object: + if (objectFactory != null) + { + var v = objectFactory(value as JsonObject); + if (null != v) + { + container.Add(key, v); + } + } + break; + } + } + catch + { + } + } + return container; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonArray.cs b/src/DataProtection/generated/runtime/Customizations/JsonArray.cs new file mode 100644 index 000000000000..3e199ee73773 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonArray.cs @@ -0,0 +1,13 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public partial class JsonArray + { + internal override object ToValue() => Count == 0 ? new object[0] : System.Linq.Enumerable.ToArray(System.Linq.Enumerable.Select(this, each => each.ToValue())); + } + + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonBoolean.cs b/src/DataProtection/generated/runtime/Customizations/JsonBoolean.cs new file mode 100644 index 000000000000..0c09fe294806 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonBoolean.cs @@ -0,0 +1,16 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal partial class JsonBoolean + { + internal static JsonBoolean Create(bool? value) => value is bool b ? new JsonBoolean(b) : null; + internal bool ToBoolean() => Value; + + internal override object ToValue() => Value; + } + + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonNode.cs b/src/DataProtection/generated/runtime/Customizations/JsonNode.cs new file mode 100644 index 000000000000..306782820016 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonNode.cs @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System; + using System.Collections.Generic; + + public partial class JsonNode + { + /// + /// Returns the content of this node as the underlying value. + /// Will default to the string representation if not overridden in child classes. + /// + /// an object with the underlying value of the node. + internal virtual object ToValue() { + return this.ToString(); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonNumber.cs b/src/DataProtection/generated/runtime/Customizations/JsonNumber.cs new file mode 100644 index 000000000000..4adc93a66d38 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonNumber.cs @@ -0,0 +1,78 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System; + + public partial class JsonNumber + { + internal static readonly DateTime EpochDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); + private static long ToUnixTime(DateTime dateTime) + { + return (long)dateTime.Subtract(EpochDate).TotalSeconds; + } + private static DateTime FromUnixTime(long totalSeconds) + { + return EpochDate.AddSeconds(totalSeconds); + } + internal byte ToByte() => this; + internal int ToInt() => this; + internal long ToLong() => this; + internal short ToShort() => this; + internal UInt16 ToUInt16() => this; + internal UInt32 ToUInt32() => this; + internal UInt64 ToUInt64() => this; + internal decimal ToDecimal() => this; + internal double ToDouble() => this; + internal float ToFloat() => this; + + internal static JsonNumber Create(int? value) => value is int n ? new JsonNumber(n) : null; + internal static JsonNumber Create(long? value) => value is long n ? new JsonNumber(n) : null; + internal static JsonNumber Create(float? value) => value is float n ? new JsonNumber(n) : null; + internal static JsonNumber Create(double? value) => value is double n ? new JsonNumber(n) : null; + internal static JsonNumber Create(decimal? value) => value is decimal n ? new JsonNumber(n) : null; + internal static JsonNumber Create(DateTime? value) => value is DateTime date ? new JsonNumber(ToUnixTime(date)) : null; + + public static implicit operator DateTime(JsonNumber number) => FromUnixTime(number); + internal DateTime ToDateTime() => this; + + internal JsonNumber(decimal value) + { + this.value = value.ToString(); + } + internal override object ToValue() + { + if (IsInteger) + { + if (int.TryParse(this.value, out int iValue)) + { + return iValue; + } + if (long.TryParse(this.value, out long lValue)) + { + return lValue; + } + } + else + { + if (float.TryParse(this.value, out float fValue)) + { + return fValue; + } + if (double.TryParse(this.value, out double dValue)) + { + return dValue; + } + if (decimal.TryParse(this.value, out decimal dcValue)) + { + return dcValue; + } + } + return null; + } + } + + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonObject.cs b/src/DataProtection/generated/runtime/Customizations/JsonObject.cs new file mode 100644 index 000000000000..ab04bf8c978e --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonObject.cs @@ -0,0 +1,183 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System; + using System.Collections.Generic; + + public partial class JsonObject + { + internal override object ToValue() => Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.JsonSerializable.FromJson(this, new System.Collections.Generic.Dictionary(), (obj) => obj.ToValue()); + + internal void SafeAdd(string name, Func valueFn) + { + if (valueFn != null) + { + var value = valueFn(); + if (null != value) + { + items.Add(name, value); + } + } + } + + internal void SafeAdd(string name, JsonNode value) + { + if (null != value) + { + items.Add(name, value); + } + } + + internal T NullableProperty(string propertyName) where T : JsonNode + { + if (this.TryGetValue(propertyName, out JsonNode value)) + { + if (value.IsNull) + { + return null; + } + if (value is T tval) + { + return tval; + } + /* it's present, but not the correct type... */ + //throw new Exception($"Property {propertyName} in object expected type {typeof(T).Name} but value of type {value.Type.ToString()} was found."); + } + return null; + } + + internal JsonObject Property(string propertyName) + { + return PropertyT(propertyName); + } + + internal T PropertyT(string propertyName) where T : JsonNode + { + if (this.TryGetValue(propertyName, out JsonNode value)) + { + if (value.IsNull) + { + return null; // we're going to assume that the consumer knows what to do if null is explicity returned? + } + + if (value is T tval) + { + return tval; + } + /* it's present, but not the correct type... */ + // throw new Exception($"Property {propertyName} in object expected type {typeof(T).Name} but value of type {value.Type.ToString()} was found."); + } + return null; + } + + internal int NumberProperty(string propertyName, ref int output) => output = this.PropertyT(propertyName)?.ToInt() ?? output; + internal float NumberProperty(string propertyName, ref float output) => output = this.PropertyT(propertyName)?.ToFloat() ?? output; + internal byte NumberProperty(string propertyName, ref byte output) => output = this.PropertyT(propertyName)?.ToByte() ?? output; + internal long NumberProperty(string propertyName, ref long output) => output = this.PropertyT(propertyName)?.ToLong() ?? output; + internal double NumberProperty(string propertyName, ref double output) => output = this.PropertyT(propertyName)?.ToDouble() ?? output; + internal decimal NumberProperty(string propertyName, ref decimal output) => output = this.PropertyT(propertyName)?.ToDecimal() ?? output; + internal short NumberProperty(string propertyName, ref short output) => output = this.PropertyT(propertyName)?.ToShort() ?? output; + internal DateTime NumberProperty(string propertyName, ref DateTime output) => output = this.PropertyT(propertyName)?.ToDateTime() ?? output; + + internal int? NumberProperty(string propertyName, ref int? output) => output = this.NullableProperty(propertyName)?.ToInt() ?? null; + internal float? NumberProperty(string propertyName, ref float? output) => output = this.NullableProperty(propertyName)?.ToFloat() ?? null; + internal byte? NumberProperty(string propertyName, ref byte? output) => output = this.NullableProperty(propertyName)?.ToByte() ?? null; + internal long? NumberProperty(string propertyName, ref long? output) => output = this.NullableProperty(propertyName)?.ToLong() ?? null; + internal double? NumberProperty(string propertyName, ref double? output) => output = this.NullableProperty(propertyName)?.ToDouble() ?? null; + internal decimal? NumberProperty(string propertyName, ref decimal? output) => output = this.NullableProperty(propertyName)?.ToDecimal() ?? null; + internal short? NumberProperty(string propertyName, ref short? output) => output = this.NullableProperty(propertyName)?.ToShort() ?? null; + + internal DateTime? NumberProperty(string propertyName, ref DateTime? output) => output = this.NullableProperty(propertyName)?.ToDateTime() ?? null; + + + internal string StringProperty(string propertyName) => this.PropertyT(propertyName)?.ToString(); + internal string StringProperty(string propertyName, ref string output) => output = this.PropertyT(propertyName)?.ToString() ?? output; + internal char StringProperty(string propertyName, ref char output) => output = this.PropertyT(propertyName)?.ToChar() ?? output; + internal char? StringProperty(string propertyName, ref char? output) => output = this.PropertyT(propertyName)?.ToChar() ?? null; + + internal DateTime StringProperty(string propertyName, ref DateTime output) => DateTime.TryParse(this.PropertyT(propertyName)?.ToString(), out output) ? output : output; + internal DateTime? StringProperty(string propertyName, ref DateTime? output) => output = DateTime.TryParse(this.PropertyT(propertyName)?.ToString(), out var o) ? o : output; + + + internal bool BooleanProperty(string propertyName, ref bool output) => output = this.PropertyT(propertyName)?.ToBoolean() ?? output; + internal bool? BooleanProperty(string propertyName, ref bool? output) => output = this.PropertyT(propertyName)?.ToBoolean() ?? null; + + internal T[] ArrayProperty(string propertyName, ref T[] output, Func deserializer) + { + var array = this.PropertyT(propertyName); + if (array != null) + { + output = new T[array.Count]; + for (var i = 0; i < output.Length; i++) + { + output[i] = deserializer(array[i]); + } + } + return output; + } + internal T[] ArrayProperty(string propertyName, Func deserializer) + { + var array = this.PropertyT(propertyName); + if (array != null) + { + var output = new T[array.Count]; + for (var i = 0; i < output.Length; i++) + { + output[i] = deserializer(array[i]); + } + return output; + } + return new T[0]; + } + internal void IterateArrayProperty(string propertyName, Action deserializer) + { + var array = this.PropertyT(propertyName); + if (array != null) + { + for (var i = 0; i < array.Count; i++) + { + deserializer(array[i]); + } + } + } + + internal Dictionary DictionaryProperty(string propertyName, ref Dictionary output, Func deserializer) + { + var dictionary = this.PropertyT(propertyName); + if (output == null) + { + output = new Dictionary(); + } + else + { + output.Clear(); + } + if (dictionary != null) + { + foreach (var key in dictionary.Keys) + { + output[key] = deserializer(dictionary[key]); + } + } + return output; + } + + internal static JsonObject Create(IDictionary source, Func selector) + { + if (source == null || selector == null) + { + return null; + } + var result = new JsonObject(); + + foreach (var key in source.Keys) + { + result.SafeAdd(key, selector(source[key])); + } + return result; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/JsonString.cs b/src/DataProtection/generated/runtime/Customizations/JsonString.cs new file mode 100644 index 000000000000..fee3b2200a36 --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/JsonString.cs @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System; + using System.Globalization; + using System.Linq; + + public partial class JsonString + { + internal static string DateFormat = "yyyy-MM-dd"; + internal static string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK"; + internal static string DateTimeRfc1123Format = "R"; + + internal static JsonString Create(string value) => value == null ? null : new JsonString(value); + internal static JsonString Create(char? value) => value is char c ? new JsonString(c.ToString()) : null; + + internal static JsonString CreateDate(DateTime? value) => value is DateTime date ? new JsonString(date.ToString(DateFormat, CultureInfo.CurrentCulture)) : null; + internal static JsonString CreateDateTime(DateTime? value) => value is DateTime date ? new JsonString(date.ToString(DateTimeFormat, CultureInfo.CurrentCulture)) : null; + internal static JsonString CreateDateTimeRfc1123(DateTime? value) => value is DateTime date ? new JsonString(date.ToString(DateTimeRfc1123Format, CultureInfo.CurrentCulture)) : null; + + internal char ToChar() => this.Value?.ToString()?.FirstOrDefault() ?? default(char); + public static implicit operator char(JsonString value) => value?.ToString()?.FirstOrDefault() ?? default(char); + public static implicit operator char? (JsonString value) => value?.ToString()?.FirstOrDefault(); + + public static implicit operator DateTime(JsonString value) => DateTime.TryParse(value, out var output) ? output : default(DateTime); + public static implicit operator DateTime? (JsonString value) => DateTime.TryParse(value, out var output) ? output : default(DateTime?); + + } + + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Customizations/XNodeArray.cs b/src/DataProtection/generated/runtime/Customizations/XNodeArray.cs new file mode 100644 index 000000000000..8871bd24e34d --- /dev/null +++ b/src/DataProtection/generated/runtime/Customizations/XNodeArray.cs @@ -0,0 +1,44 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System; + using System.Linq; + + public partial class XNodeArray + { + internal static XNodeArray Create(T[] source, Func selector) + { + if (source == null || selector == null) + { + return null; + } + var result = new XNodeArray(); + foreach (var item in source.Select(selector)) + { + result.SafeAdd(item); + } + return result; + } + internal void SafeAdd(JsonNode item) + { + if (item != null) + { + items.Add(item); + } + } + internal void SafeAdd(Func itemFn) + { + if (itemFn != null) + { + var item = itemFn(); + if (item != null) + { + items.Add(item); + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Debugging.cs b/src/DataProtection/generated/runtime/Debugging.cs new file mode 100644 index 000000000000..70fca9b685e4 --- /dev/null +++ b/src/DataProtection/generated/runtime/Debugging.cs @@ -0,0 +1,28 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + internal static class AttachDebugger + { + internal static void Break() + { + while (!System.Diagnostics.Debugger.IsAttached) + { + System.Console.Error.WriteLine($"Waiting for debugger to attach to process {System.Diagnostics.Process.GetCurrentProcess().Id}"); + for (int i = 0; i < 50; i++) + { + if (System.Diagnostics.Debugger.IsAttached) + { + break; + } + System.Threading.Thread.Sleep(100); + System.Console.Error.Write("."); + } + System.Console.Error.WriteLine(); + } + System.Diagnostics.Debugger.Break(); + } + } +} diff --git a/src/DataProtection/generated/runtime/DictionaryExtensions.cs b/src/DataProtection/generated/runtime/DictionaryExtensions.cs new file mode 100644 index 000000000000..21f40c891051 --- /dev/null +++ b/src/DataProtection/generated/runtime/DictionaryExtensions.cs @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + internal static class DictionaryExtensions + { + internal static void HashTableToDictionary(System.Collections.Hashtable hashtable, System.Collections.Generic.IDictionary dictionary) + { + foreach (var each in hashtable.Keys) + { + var key = each.ToString(); + var value = hashtable[key]; + if (null != value) + { + if (value is System.Collections.Hashtable nested) + { + HashTableToDictionary(nested, new System.Collections.Generic.Dictionary()); + } + else + { + try + { + dictionary[key] = (V)value; + } + catch + { + // Values getting dropped; not compatible with target dictionary. Not sure what to do here. + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/EventData.cs b/src/DataProtection/generated/runtime/EventData.cs new file mode 100644 index 000000000000..6044fb2827e4 --- /dev/null +++ b/src/DataProtection/generated/runtime/EventData.cs @@ -0,0 +1,78 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + + using System; + using System.Threading; + + ///Represents the data in signaled event. + public partial class EventData + { + /// + /// The type of the event being signaled + /// + public string Id; + + /// + /// The user-ready message from the event. + /// + public string Message; + + /// + /// When the event is about a parameter, this is the parameter name. + /// Used in Validation Events + /// + public string Parameter; + + /// + /// This represents a numeric value associated with the event. + /// Use for progress-style events + /// + public double Value; + + /// + /// Any extended data for an event should be serialized and stored here. + /// + public string ExtendedData; + + /// + /// If the event triggers after the request message has been created, this will contain the Request Message (which in HTTP calls would be HttpRequestMessage) + /// + /// Typically you'd cast this to the expected type to use it: + /// + /// if(eventData.RequestMessgae is HttpRequestMessage httpRequest) + /// { + /// httpRequest.Headers.Add("x-request-flavor", "vanilla"); + /// } + /// + /// + public object RequestMessage; + + /// + /// If the event triggers after the response is back, this will contain the Response Message (which in HTTP calls would be HttpResponseMessage) + /// + /// Typically you'd cast this to the expected type to use it: + /// + /// if(eventData.ResponseMessage is HttpResponseMessage httpResponse){ + /// var flavor = httpResponse.Headers.GetValue("x-request-flavor"); + /// } + /// + /// + public object ResponseMessage; + + /// + /// Cancellation method for this event. + /// + /// If the event consumer wishes to cancel the request that initiated this event, call Cancel() + /// + /// + /// The original initiator of the request must provide the implementation of this. + /// + public System.Action Cancel; + } + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/EventDataExtensions.cs b/src/DataProtection/generated/runtime/EventDataExtensions.cs new file mode 100644 index 000000000000..37f3725b8307 --- /dev/null +++ b/src/DataProtection/generated/runtime/EventDataExtensions.cs @@ -0,0 +1,94 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System; + + [System.ComponentModel.TypeConverter(typeof(EventDataConverter))] + /// + /// PowerShell-specific data on top of the llc# EventData + /// + /// + /// In PowerShell, we add on the EventDataConverter to support sending events between modules. + /// Obviously, this code would need to be duplcated on both modules. + /// This is preferable to sharing a common library, as versioning makes that problematic. + /// + public partial class EventData : EventArgs + { + } + + /// + /// A PowerShell PSTypeConverter to adapt an EventData object that has been passed. + /// Usually used between modules. + /// + public class EventDataConverter : System.Management.Automation.PSTypeConverter + { + public override bool CanConvertTo(object sourceValue, Type destinationType) => false; + public override object ConvertTo(object sourceValue, Type destinationType, IFormatProvider formatProvider, bool ignoreCase) => null; + public override bool CanConvertFrom(dynamic sourceValue, Type destinationType) => destinationType == typeof(EventData) && CanConvertFrom(sourceValue); + public override object ConvertFrom(dynamic sourceValue, Type destinationType, IFormatProvider formatProvider, bool ignoreCase) => ConvertFrom(sourceValue); + + /// + /// Verifies that a given object has the required members to convert it to the target type (EventData) + /// + /// Uses a dynamic type so that it is able to use the simplest code without excessive checking. + /// + /// The instance to verify + /// True, if the object has all the required parameters. + public static bool CanConvertFrom(dynamic sourceValue) + { + try + { + // check if this has *required* parameters... + sourceValue?.Id?.GetType(); + sourceValue?.Message?.GetType(); + sourceValue?.Cancel?.GetType(); + + // remaining parameters are not *required*, + // and if they have values, it will copy them at conversion time. + } + catch + { + // if anything throws an exception (because it's null, or doesn't have that member) + return false; + } + return true; + } + + /// + /// Returns result of the delegate as the expected type, or default(T) + /// + /// This isolates any exceptions from the consumer. + /// + /// A delegate that returns a value + /// The desired output type + /// The value from the function if the type is correct + private static T To(Func srcValue) + { + try { return srcValue(); } + catch { return default(T); } + } + + /// + /// Converts an incoming object to the expected type by treating the incoming object as a dynamic, and coping the expected values. + /// + /// the incoming object + /// EventData + public static EventData ConvertFrom(dynamic sourceValue) + { + return new EventData + { + Id = To(() => sourceValue.Id), + Message = To(() => sourceValue.Message), + Parameter = To(() => sourceValue.Parameter), + Value = To(() => sourceValue.Value), + RequestMessage = To(() => sourceValue.RequestMessage), + ResponseMessage = To(() => sourceValue.ResponseMessage), + Cancel = To(() => sourceValue.Cancel) + }; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/EventListener.cs b/src/DataProtection/generated/runtime/EventListener.cs new file mode 100644 index 000000000000..90f19e364d64 --- /dev/null +++ b/src/DataProtection/generated/runtime/EventListener.cs @@ -0,0 +1,247 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + + using System; + using System.Linq; + using System.Collections; + using System.Collections.Generic; + using System.Net.Http; + using System.Threading; + using System.Threading.Tasks; + using GetEventData = System.Func; + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public interface IValidates + { + Task Validate(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IEventListener listener); + } + + /// + /// The IEventListener Interface defines the communication mechanism for Signaling events during a remote call. + /// + /// + /// The interface is designed to be as minimal as possible, allow for quick peeking of the event type (id) + /// and the cancellation status and provides a delegate for retrieving the event details themselves. + /// + public interface IEventListener + { + Task Signal(string id, CancellationToken token, GetEventData createMessage); + CancellationToken Token { get; } + System.Action Cancel { get; } + } + + internal static partial class Extensions + { + public static Task Signal(this IEventListener instance, string id, CancellationToken token, Func createMessage) => instance.Signal(id, token, createMessage); + public static Task Signal(this IEventListener instance, string id, CancellationToken token) => instance.Signal(id, token, () => new EventData { Id = id, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText, HttpRequestMessage request) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, RequestMessage = request, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText, HttpResponseMessage response) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, RequestMessage = response.RequestMessage, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText, double magnitude) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText, double magnitude, HttpRequestMessage request) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, RequestMessage = request, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, string messageText, double magnitude, HttpResponseMessage response) => instance.Signal(id, token, () => new EventData { Id = id, Message = messageText, RequestMessage = response.RequestMessage, ResponseMessage = response, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, HttpRequestMessage request) => instance.Signal(id, token, () => new EventData { Id = id, RequestMessage = request, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, HttpRequestMessage request, HttpResponseMessage response) => instance.Signal(id, token, () => new EventData { Id = id, RequestMessage = request, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, HttpResponseMessage response) => instance.Signal(id, token, () => new EventData { Id = id, RequestMessage = response.RequestMessage, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, CancellationToken token, EventData message) => instance.Signal(id, token, () => { message.Id = id; message.Cancel = instance.Cancel; return message; }); + + public static Task Signal(this IEventListener instance, string id, Func createMessage) => instance.Signal(id, instance.Token, createMessage); + public static Task Signal(this IEventListener instance, string id) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText, HttpRequestMessage request) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, RequestMessage = request, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText, HttpResponseMessage response) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, RequestMessage = response.RequestMessage, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText, double magnitude) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText, double magnitude, HttpRequestMessage request) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, RequestMessage = request, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, string messageText, double magnitude, HttpResponseMessage response) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = messageText, RequestMessage = response.RequestMessage, ResponseMessage = response, Value = magnitude, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, HttpRequestMessage request) => instance.Signal(id, instance.Token, () => new EventData { Id = id, RequestMessage = request, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, HttpRequestMessage request, HttpResponseMessage response) => instance.Signal(id, instance.Token, () => new EventData { Id = id, RequestMessage = request, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, HttpResponseMessage response) => instance.Signal(id, instance.Token, () => new EventData { Id = id, RequestMessage = response.RequestMessage, ResponseMessage = response, Cancel = instance.Cancel }); + public static Task Signal(this IEventListener instance, string id, EventData message) => instance.Signal(id, instance.Token, () => { message.Id = id; message.Cancel = instance.Cancel; return message; }); + + public static Task Signal(this IEventListener instance, string id, System.Uri uri) => instance.Signal(id, instance.Token, () => new EventData { Id = id, Message = uri.ToString(), Cancel = instance.Cancel }); + + public static async Task AssertNotNull(this IEventListener instance, string parameterName, object value) + { + if (value == null) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"'{parameterName}' should not be null", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertMinimumLength(this IEventListener instance, string parameterName, string value, int length) + { + if (value != null && value.Length < length) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Length of '{parameterName}' is less than {length}", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertMaximumLength(this IEventListener instance, string parameterName, string value, int length) + { + if (value != null && value.Length > length) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Length of '{parameterName}' is greater than {length}", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + + public static async Task AssertRegEx(this IEventListener instance, string parameterName, string value, string regularExpression) + { + if (value != null && !System.Text.RegularExpressions.Regex.Match(value, regularExpression).Success) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"'{parameterName}' does not validate against pattern /{regularExpression}/", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertEnum(this IEventListener instance, string parameterName, string value, params string[] values) + { + if (!values.Any(each => each.Equals(value))) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"'{parameterName}' is not one of ({values.Aggregate((c, e) => $"'{e}',{c}")}", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertObjectIsValid(this IEventListener instance, string parameterName, object inst) + { + await (inst as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.IValidates)?.Validate(instance); + } + + public static async Task AssertIsLessThan(this IEventListener instance, string parameterName, T? value, T max) where T : struct, System.IComparable + { + if (null != value && ((T)value).CompareTo(max) >= 0) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be less than {max} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertIsGreaterThan(this IEventListener instance, string parameterName, T? value, T max) where T : struct, System.IComparable + { + if (null != value && ((T)value).CompareTo(max) <= 0) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be greater than {max} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertIsLessThanOrEqual(this IEventListener instance, string parameterName, T? value, T max) where T : struct, System.IComparable + { + if (null != value && ((T)value).CompareTo(max) > 0) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be less than or equal to {max} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertIsGreaterThanOrEqual(this IEventListener instance, string parameterName, T? value, T max) where T : struct, System.IComparable + { + if (null != value && ((T)value).CompareTo(max) < 0) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be greater than or equal to {max} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertIsMultipleOf(this IEventListener instance, string parameterName, Int64? value, Int64 multiple) + { + if (null != value && value % multiple != 0) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be multiple of {multiple} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + public static async Task AssertIsMultipleOf(this IEventListener instance, string parameterName, double? value, double multiple) + { + if (null != value) + { + var i = (Int64)(value / multiple); + if (i != value / multiple) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be multiple of {multiple} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + } + public static async Task AssertIsMultipleOf(this IEventListener instance, string parameterName, decimal? value, decimal multiple) + { + if (null != value) + { + var i = (Int64)(value / multiple); + if (i != value / multiple) + { + await instance.Signal(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, instance.Token, () => new EventData { Id = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Events.ValidationWarning, Message = $"Value of '{parameterName}' must be multiple of {multiple} (value is {value})", Parameter = parameterName, Cancel = instance.Cancel }); + } + } + } + } + + /// + /// An Implementation of the IEventListener that supports subscribing to events and dispatching them + /// (used for manually using the lowlevel interface) + /// + public class EventListener : CancellationTokenSource, IEnumerable>, IEventListener + { + private Dictionary calls = new Dictionary(); + public IEnumerator> GetEnumerator() => calls.GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() => calls.GetEnumerator(); + public EventListener() + { + } + + public new Action Cancel => base.Cancel; + private Event tracer; + + public EventListener(params (string name, Event callback)[] initializer) + { + foreach (var each in initializer) + { + Add(each.name, each.callback); + } + } + + public void Add(string name, SynchEvent callback) + { + Add(name, (message) => { callback(message); return Task.CompletedTask; }); + } + + public void Add(string name, Event callback) + { + if (callback != null) + { + if (string.IsNullOrEmpty(name)) + { + if (calls.ContainsKey(name)) + { + tracer += callback; + } + else + { + tracer = callback; + } + } + else + { + if (calls.ContainsKey(name)) + { + calls[name ?? System.String.Empty] += callback; + } + else + { + calls[name ?? System.String.Empty] = callback; + } + } + } + } + + + public async Task Signal(string id, CancellationToken token, GetEventData createMessage) + { + using (NoSynchronizationContext) + { + if (!string.IsNullOrEmpty(id) && (calls.TryGetValue(id, out Event listener) || tracer != null)) + { + var message = createMessage(); + message.Id = id; + + await listener?.Invoke(message); + await tracer?.Invoke(message); + + if (token.IsCancellationRequested) + { + throw new OperationCanceledException($"Canceled by event {id} ", this.Token); + } + } + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Events.cs b/src/DataProtection/generated/runtime/Events.cs new file mode 100644 index 000000000000..b778dbdf685e --- /dev/null +++ b/src/DataProtection/generated/runtime/Events.cs @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + public static partial class Events + { + public const string Log = nameof(Log); + public const string Validation = nameof(Validation); + public const string ValidationWarning = nameof(ValidationWarning); + public const string AfterValidation = nameof(AfterValidation); + public const string RequestCreated = nameof(RequestCreated); + public const string ResponseCreated = nameof(ResponseCreated); + public const string URLCreated = nameof(URLCreated); + public const string Finally = nameof(Finally); + public const string HeaderParametersAdded = nameof(HeaderParametersAdded); + public const string BodyContentSet = nameof(BodyContentSet); + public const string BeforeCall = nameof(BeforeCall); + public const string BeforeResponseDispatch = nameof(BeforeResponseDispatch); + public const string FollowingNextLink = nameof(FollowingNextLink); + public const string DelayBeforePolling = nameof(DelayBeforePolling); + public const string Polling = nameof(Polling); + + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/EventsExtensions.cs b/src/DataProtection/generated/runtime/EventsExtensions.cs new file mode 100644 index 000000000000..e7533bc5a5b3 --- /dev/null +++ b/src/DataProtection/generated/runtime/EventsExtensions.cs @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + public static partial class Events + { + public const string CmdletProcessRecordStart = nameof(CmdletProcessRecordStart); + public const string CmdletProcessRecordAsyncStart = nameof(CmdletProcessRecordAsyncStart); + public const string CmdletException = nameof(CmdletException); + public const string CmdletGetPipeline = nameof(CmdletGetPipeline); + public const string CmdletBeforeAPICall = nameof(CmdletBeforeAPICall); + public const string CmdletBeginProcessing = nameof(CmdletBeginProcessing); + public const string CmdletEndProcessing = nameof(CmdletEndProcessing); + public const string CmdletProcessRecordEnd = nameof(CmdletProcessRecordEnd); + public const string CmdletProcessRecordAsyncEnd = nameof(CmdletProcessRecordAsyncEnd); + public const string CmdletAfterAPICall = nameof(CmdletAfterAPICall); + + public const string Verbose = nameof(Verbose); + public const string Debug = nameof(Debug); + public const string Information = nameof(Information); + public const string Error = nameof(Error); + public const string Warning = nameof(Warning); + } + +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Extensions.cs b/src/DataProtection/generated/runtime/Extensions.cs new file mode 100644 index 000000000000..ac42664f8ba9 --- /dev/null +++ b/src/DataProtection/generated/runtime/Extensions.cs @@ -0,0 +1,111 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System.Linq; + + internal static partial class Extensions + { + + public static T ReadHeaders(this T instance, global::System.Net.Http.Headers.HttpResponseHeaders headers) where T : class + { + (instance as IHeaderSerializable)?.ReadHeaders(headers); + return instance; + } + + internal static bool If(T input, out T output) + { + if (null == input) + { + output = default(T); + return false; + } + output = input; + return true; + } + + internal static void AddIf(T value, System.Action addMethod) + { + // if value is present (and it's not just an empty JSON Object) + if (null != value && (value as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject)?.Keys.Count != 0) + { + addMethod(value); + } + } + + internal static void AddIf(T value, string serializedName, System.Action addMethod) + { + // if value is present (and it's not just an empty JSON Object) + if (null != value && (value as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject)?.Keys.Count != 0) + { + addMethod(serializedName, value); + } + } + + /// + /// Returns the first header value as a string from an HttpReponseMessage. + /// + /// the HttpResponseMessage to fetch a header from + /// the header name + /// the first header value as a string from an HttpReponseMessage. string.empty if there is no header value matching + internal static string GetFirstHeader(this System.Net.Http.HttpResponseMessage response, string headerName) => response.Headers.FirstOrDefault(each => headerName == each.Key).Value?.FirstOrDefault() ?? string.Empty; + + /// + /// Sets the Synchronization Context to null, and returns an IDisposable that when disposed, + /// will restore the synchonization context to the original value. + /// + /// This is used a less-invasive means to ensure that code in the library that doesn't + /// need to be continued in the original context doesn't have to have ConfigureAwait(false) + /// on every single await + /// + /// If the SynchronizationContext is null when this is used, the resulting IDisposable + /// will not do anything (this prevents excessive re-setting of the SynchronizationContext) + /// + /// Usage: + /// + /// using(NoSynchronizationContext) { + /// await SomeAsyncOperation(); + /// await SomeOtherOperation(); + /// } + /// + /// + /// + /// An IDisposable that will return the SynchronizationContext to original state + internal static System.IDisposable NoSynchronizationContext => System.Threading.SynchronizationContext.Current == null ? Dummy : new NoSyncContext(); + + /// + /// An instance of the Dummy IDispoable. + /// + /// + internal static System.IDisposable Dummy = new DummyDisposable(); + + /// + /// An IDisposable that does absolutely nothing. + /// + internal class DummyDisposable : System.IDisposable + { + public void Dispose() + { + } + } + /// + /// An IDisposable that saves the SynchronizationContext,sets it to null and + /// restores it to the original upon Dispose(). + /// + /// NOTE: This is designed to be less invasive than using .ConfigureAwait(false) + /// on every single await in library code (ie, places where we know we don't need + /// to continue in the same context as we went async) + /// + internal class NoSyncContext : System.IDisposable + { + private System.Threading.SynchronizationContext original = System.Threading.SynchronizationContext.Current; + internal NoSyncContext() + { + System.Threading.SynchronizationContext.SetSynchronizationContext(null); + } + public void Dispose() => System.Threading.SynchronizationContext.SetSynchronizationContext(original); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Helpers/Extensions/StringBuilderExtensions.cs b/src/DataProtection/generated/runtime/Helpers/Extensions/StringBuilderExtensions.cs new file mode 100644 index 000000000000..11ab7671e998 --- /dev/null +++ b/src/DataProtection/generated/runtime/Helpers/Extensions/StringBuilderExtensions.cs @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Text; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal static class StringBuilderExtensions + { + /// + /// Extracts the buffered value and resets the buffer + /// + internal static string Extract(this StringBuilder builder) + { + var text = builder.ToString(); + + builder.Clear(); + + return text; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Helpers/Extensions/TypeExtensions.cs b/src/DataProtection/generated/runtime/Helpers/Extensions/TypeExtensions.cs new file mode 100644 index 000000000000..1dabccbdda61 --- /dev/null +++ b/src/DataProtection/generated/runtime/Helpers/Extensions/TypeExtensions.cs @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal static class TypeExtensions + { + internal static bool IsNullable(this Type type) => + type.IsGenericType && type.GetGenericTypeDefinition().Equals(typeof(Nullable<>)); + + internal static Type GetOpenGenericInterface(this Type candidateType, Type openGenericInterfaceType) + { + + if (candidateType.IsGenericType && candidateType.GetGenericTypeDefinition() == openGenericInterfaceType) + { + return candidateType; + } + + // Check if it references it's own converter.... + + foreach (Type interfaceType in candidateType.GetInterfaces()) + { + if (interfaceType.IsGenericType + && interfaceType.GetGenericTypeDefinition().Equals(openGenericInterfaceType)) + { + return interfaceType; + } + } + + return null; + } + + // Author: Sebastian Good + // http://stackoverflow.com/questions/503263/how-to-determine-if-a-type-implements-a-specific-generic-interface-type + internal static bool ImplementsOpenGenericInterface(this Type candidateType, Type openGenericInterfaceType) + { + if (candidateType.Equals(openGenericInterfaceType)) + { + return true; + } + + if (candidateType.IsGenericType && candidateType.GetGenericTypeDefinition().Equals(openGenericInterfaceType)) + { + return true; + } + + foreach (Type i in candidateType.GetInterfaces()) + { + if (i.IsGenericType && i.ImplementsOpenGenericInterface(openGenericInterfaceType)) + { + return true; + } + } + + return false; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Helpers/Seperator.cs b/src/DataProtection/generated/runtime/Helpers/Seperator.cs new file mode 100644 index 000000000000..4ad13d601849 --- /dev/null +++ b/src/DataProtection/generated/runtime/Helpers/Seperator.cs @@ -0,0 +1,11 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal static class Seperator + { + internal static readonly char[] Dash = { '-' }; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Helpers/TypeDetails.cs b/src/DataProtection/generated/runtime/Helpers/TypeDetails.cs new file mode 100644 index 000000000000..e2e35646ecc8 --- /dev/null +++ b/src/DataProtection/generated/runtime/Helpers/TypeDetails.cs @@ -0,0 +1,116 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Reflection; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + + + + internal class TypeDetails + { + private readonly Type info; + + internal TypeDetails(Type info) + { + this.info = info ?? throw new ArgumentNullException(nameof(info)); + } + + internal Type NonNullType { get; set; } + + internal object DefaultValue { get; set; } + + internal bool IsNullable { get; set; } + + internal bool IsList { get; set; } + + internal bool IsStringLike { get; set; } + + internal bool IsEnum => info.IsEnum; + + internal bool IsArray => info.IsArray; + + internal bool IsValueType => info.IsValueType; + + internal Type ElementType { get; set; } + + internal IJsonConverter JsonConverter { get; set; } + + #region Creation + + private static readonly ConcurrentDictionary cache = new ConcurrentDictionary(); + + internal static TypeDetails Get() => Get(typeof(T)); + + internal static TypeDetails Get(Type type) => cache.GetOrAdd(type, Create); + + private static TypeDetails Create(Type type) + { + var isGenericList = !type.IsPrimitive && type.ImplementsOpenGenericInterface(typeof(IList<>)); + var isList = !type.IsPrimitive && (isGenericList || typeof(IList).IsAssignableFrom(type)); + + var isNullable = type.IsNullable(); + + Type elementType; + + if (type.IsArray) + { + elementType = type.GetElementType(); + } + else if (isGenericList) + { + var iList = type.GetOpenGenericInterface(typeof(IList<>)); + + elementType = iList.GetGenericArguments()[0]; + } + else + { + elementType = null; + } + + var nonNullType = isNullable ? type.GetGenericArguments()[0] : type; + + var isStringLike = false; + + IJsonConverter converter; + + var jsonConverterAttribute = type.GetCustomAttribute(); + + if (jsonConverterAttribute != null) + { + converter = jsonConverterAttribute.Converter; + } + else if (nonNullType.IsEnum) + { + converter = new EnumConverter(nonNullType); + } + else if (JsonConverterFactory.Instances.TryGetValue(nonNullType, out converter)) + { + } + else if (StringLikeHelper.IsStringLike(nonNullType)) + { + isStringLike = true; + + converter = new StringLikeConverter(nonNullType); + } + + return new TypeDetails(nonNullType) { + NonNullType = nonNullType, + DefaultValue = type.IsValueType ? Activator.CreateInstance(type) : null, + IsNullable = isNullable, + IsList = isList, + IsStringLike = isStringLike, + ElementType = elementType, + JsonConverter = converter + }; + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Helpers/XHelper.cs b/src/DataProtection/generated/runtime/Helpers/XHelper.cs new file mode 100644 index 000000000000..b2dbf7736eb3 --- /dev/null +++ b/src/DataProtection/generated/runtime/Helpers/XHelper.cs @@ -0,0 +1,75 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal static class XHelper + { + internal static JsonNode Create(JsonType type, TypeCode code, object value) + { + switch (type) + { + case JsonType.Binary : return new XBinary((byte[])value); + case JsonType.Boolean : return new JsonBoolean((bool)value); + case JsonType.Number : return new JsonNumber(value.ToString()); + case JsonType.String : return new JsonString((string)value); + } + + throw new Exception($"JsonType '{type}' does not have a fast conversion"); + } + + internal static bool TryGetElementType(TypeCode code, out JsonType type) + { + switch (code) + { + case TypeCode.Boolean : type = JsonType.Boolean; return true; + case TypeCode.Byte : type = JsonType.Number; return true; + case TypeCode.DateTime : type = JsonType.Date; return true; + case TypeCode.Decimal : type = JsonType.Number; return true; + case TypeCode.Double : type = JsonType.Number; return true; + case TypeCode.Empty : type = JsonType.Null; return true; + case TypeCode.Int16 : type = JsonType.Number; return true; + case TypeCode.Int32 : type = JsonType.Number; return true; + case TypeCode.Int64 : type = JsonType.Number; return true; + case TypeCode.SByte : type = JsonType.Number; return true; + case TypeCode.Single : type = JsonType.Number; return true; + case TypeCode.String : type = JsonType.String; return true; + case TypeCode.UInt16 : type = JsonType.Number; return true; + case TypeCode.UInt32 : type = JsonType.Number; return true; + case TypeCode.UInt64 : type = JsonType.Number; return true; + } + + type = default; + + return false; + } + + internal static JsonType GetElementType(TypeCode code) + { + switch (code) + { + case TypeCode.Boolean : return JsonType.Boolean; + case TypeCode.Byte : return JsonType.Number; + case TypeCode.DateTime : return JsonType.Date; + case TypeCode.Decimal : return JsonType.Number; + case TypeCode.Double : return JsonType.Number; + case TypeCode.Empty : return JsonType.Null; + case TypeCode.Int16 : return JsonType.Number; + case TypeCode.Int32 : return JsonType.Number; + case TypeCode.Int64 : return JsonType.Number; + case TypeCode.SByte : return JsonType.Number; + case TypeCode.Single : return JsonType.Number; + case TypeCode.String : return JsonType.String; + case TypeCode.UInt16 : return JsonType.Number; + case TypeCode.UInt32 : return JsonType.Number; + case TypeCode.UInt64 : return JsonType.Number; + default : return JsonType.Object; + } + + throw new Exception($"TypeCode '{code}' does not have a fast converter"); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/HttpPipeline.cs b/src/DataProtection/generated/runtime/HttpPipeline.cs new file mode 100644 index 000000000000..12a9e662d078 --- /dev/null +++ b/src/DataProtection/generated/runtime/HttpPipeline.cs @@ -0,0 +1,88 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System.Net.Http; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + using System.Collections; + using System.Linq; + + using GetEventData = System.Func; + using NextDelegate = System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>; + + using SignalDelegate = System.Func, System.Threading.Tasks.Task>; + using GetParameterDelegate = System.Func, string, object>; + using SendAsyncStepDelegate = System.Func, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>; + using PipelineChangeDelegate = System.Action, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>>; + using ModuleLoadPipelineDelegate = System.Action, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>>, System.Action, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>>>; + using NewRequestPipelineDelegate = System.Action, System.Action, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>>, System.Action, System.Threading.Tasks.Task>, System.Func, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>, System.Threading.Tasks.Task>>>; + +/* + public class DelegateBasedEventListener : IEventListener + { + private EventListenerDelegate _listener; + public DelegateBasedEventListener(EventListenerDelegate listener) + { + _listener = listener; + } + public CancellationToken Token => CancellationToken.None; + public System.Action Cancel => () => { }; + + + public Task Signal(string id, CancellationToken token, GetEventData createMessage) + { + return _listener(id, token, () => createMessage()); + } + } +*/ + /// + /// This is a necessary extension to the SendAsyncFactory to support the 'generic' delegate format. + /// + public partial class SendAsyncFactory + { + /// + /// This translates a generic-defined delegate for a listener into one that fits our ISendAsync pattern. + /// (Provided to support out-of-module delegation for Azure Cmdlets) + /// + /// The Pipeline Step as a delegate + public SendAsyncFactory(SendAsyncStepDelegate step) => this.implementation = (request, listener, next) => + step( + request, + listener.Token, + listener.Cancel, + (id, token, getEventData) => listener.Signal(id, token, () => { + var data = EventDataConverter.ConvertFrom( getEventData() ) as EventData; + data.Id = id; + data.Cancel = listener.Cancel; + data.RequestMessage = request; + return data; + }), + (req, token, cancel, listenerDelegate) => next.SendAsync(req, listener)); + } + + public partial class HttpPipeline : ISendAsync + { + public HttpPipeline Append(SendAsyncStepDelegate item) + { + if (item != null) + { + Append(new SendAsyncFactory(item)); + } + return this; + } + + public HttpPipeline Prepend(SendAsyncStepDelegate item) + { + if (item != null) + { + Prepend(new SendAsyncFactory(item)); + } + return this; + } + } +} diff --git a/src/DataProtection/generated/runtime/HttpPipelineMocking.ps1 b/src/DataProtection/generated/runtime/HttpPipelineMocking.ps1 new file mode 100644 index 000000000000..5b3884222912 --- /dev/null +++ b/src/DataProtection/generated/runtime/HttpPipelineMocking.ps1 @@ -0,0 +1,110 @@ +$ErrorActionPreference = "Stop" + +# get the recording path +if (-not $TestRecordingFile) { + $TestRecordingFile = Join-Path $PSScriptRoot 'recording.json' +} + +# create the Http Pipeline Recorder +$Mock = New-Object -Type Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PipelineMock $TestRecordingFile + +# set the recorder to the appropriate mode (default to 'live') +Write-Host -ForegroundColor Green "Running '$TestMode' mode..." +switch ($TestMode) { + 'record' { + Write-Host -ForegroundColor Green "Recording to $TestRecordingFile" + $Mock.SetRecord() + $null = erase -ea 0 $TestRecordingFile + } + 'playback' { + if (-not (Test-Path $TestRecordingFile)) { + Write-Host -fore:yellow "Recording file '$TestRecordingFile' is not present. Tests expecting recorded responses will fail" + } else { + Write-Host -ForegroundColor Green "Using recording $TestRecordingFile" + } + $Mock.SetPlayback() + $Mock.ForceResponseHeaders["Retry-After"] = "0"; + } + default: { + $Mock.SetLive() + } +} + +# overrides for Pester Describe/Context/It + +function Describe( + [Parameter(Mandatory = $true, Position = 0)] + [string] $Name, + + [Alias('Tags')] + [string[]] $Tag = @(), + + [Parameter(Position = 1)] + [ValidateNotNull()] + [ScriptBlock] $Fixture = $(Throw "No test script block is provided. (Have you put the open curly brace on the next line?)") +) { + $Mock.PushDescription($Name) + try { + return pester\Describe -Name $Name -Tag $Tag -Fixture $fixture + } + finally { + $Mock.PopDescription() + } +} + +function Context( + [Parameter(Mandatory = $true, Position = 0)] + [string] $Name, + + [Alias('Tags')] + [string[]] $Tag = @(), + + [Parameter(Position = 1)] + [ValidateNotNull()] + [ScriptBlock] $Fixture = $(Throw "No test script block is provided. (Have you put the open curly brace on the next line?)") +) { + $Mock.PushContext($Name) + try { + return pester\Context -Name $Name -Tag $Tag -Fixture $fixture + } + finally { + $Mock.PopContext() + } +} + +function It { + [CmdletBinding(DefaultParameterSetName = 'Normal')] + param( + [Parameter(Mandatory = $true, Position = 0)] + [string]$Name, + + [Parameter(Position = 1)] + [ScriptBlock] $Test = { }, + + [System.Collections.IDictionary[]] $TestCases, + + [Parameter(ParameterSetName = 'Pending')] + [Switch] $Pending, + + [Parameter(ParameterSetName = 'Skip')] + [Alias('Ignore')] + [Switch] $Skip + ) + $Mock.PushScenario($Name) + + try { + if ($skip) { + return pester\It -Name $Name -Test $Test -TestCases $TestCases -Skip + } + if ($pending) { + return pester\It -Name $Name -Test $Test -TestCases $TestCases -Pending + } + return pester\It -Name $Name -Test $Test -TestCases $TestCases + } + finally { + $null = $Mock.PopScenario() + } +} + +# set the HttpPipelineAppend for all the cmdlets +$PSDefaultParameterValues["*:HttpPipelinePrepend"] = $Mock diff --git a/src/DataProtection/generated/runtime/IAssociativeArray.cs b/src/DataProtection/generated/runtime/IAssociativeArray.cs new file mode 100644 index 000000000000..bf5dc0f44917 --- /dev/null +++ b/src/DataProtection/generated/runtime/IAssociativeArray.cs @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + /// A subset of IDictionary that doesn't implement IEnumerable or IDictionary to work around PowerShell's aggressive formatter + public interface IAssociativeArray + { + System.Collections.Generic.IEnumerable Keys { get; } + System.Collections.Generic.IEnumerable Values { get; } + System.Collections.Generic.IDictionary AdditionalProperties { get; } + T this[string index] { get; set; } + int Count { get; } + void Add(string key, T value); + bool ContainsKey(string key); + bool Remove(string key); + bool TryGetValue(string key, out T value); + void Clear(); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/IHeaderSerializable.cs b/src/DataProtection/generated/runtime/IHeaderSerializable.cs new file mode 100644 index 000000000000..7a5dcbb32cfd --- /dev/null +++ b/src/DataProtection/generated/runtime/IHeaderSerializable.cs @@ -0,0 +1,14 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + public interface IHeaderSerializable + { + void ReadHeaders(global::System.Net.Http.Headers.HttpResponseHeaders headers); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/ISendAsync.cs b/src/DataProtection/generated/runtime/ISendAsync.cs new file mode 100644 index 000000000000..ae7e70bb73d6 --- /dev/null +++ b/src/DataProtection/generated/runtime/ISendAsync.cs @@ -0,0 +1,296 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System.Net.Http; + using System.Collections.Generic; + using System.Threading; + using System.Threading.Tasks; + using System.Collections; + using System.Linq; + + /// + /// The interface for sending an HTTP request across the wire. + /// + public interface ISendAsync + { + Task SendAsync(HttpRequestMessage request, IEventListener callback); + } + + public class SendAsyncTerminalFactory : ISendAsyncTerminalFactory, ISendAsync + { + SendAsync implementation; + + public SendAsyncTerminalFactory(SendAsync implementation) => this.implementation = implementation; + public SendAsyncTerminalFactory(ISendAsync implementation) => this.implementation = implementation.SendAsync; + public ISendAsync Create() => this; + public Task SendAsync(HttpRequestMessage request, IEventListener callback) => implementation(request, callback); + } + + public partial class SendAsyncFactory : ISendAsyncFactory + { + public class Sender : ISendAsync + { + internal ISendAsync next; + internal SendAsyncStep implementation; + + public Task SendAsync(HttpRequestMessage request, IEventListener callback) => implementation(request, callback, next); + } + SendAsyncStep implementation; + + public SendAsyncFactory(SendAsyncStep implementation) => this.implementation = implementation; + public ISendAsync Create(ISendAsync next) => new Sender { next = next, implementation = implementation }; + + } + + public class HttpClientFactory : ISendAsyncTerminalFactory, ISendAsync + { + HttpClient client; + public HttpClientFactory() : this(new HttpClient()) + { + } + public HttpClientFactory(HttpClient client) => this.client = client; + public ISendAsync Create() => this; + + public Task SendAsync(HttpRequestMessage request, IEventListener callback) => client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, callback.Token); + } + + public interface ISendAsyncFactory + { + ISendAsync Create(ISendAsync next); + } + + public interface ISendAsyncTerminalFactory + { + ISendAsync Create(); + } + + public partial class HttpPipeline : ISendAsync + { + private ISendAsync pipeline; + private ISendAsyncTerminalFactory terminal; + private List steps = new List(); + + public HttpPipeline() : this(new HttpClientFactory()) + { + } + + public HttpPipeline(ISendAsyncTerminalFactory terminalStep) + { + if (terminalStep == null) + { + throw new System.ArgumentNullException(nameof(terminalStep), "Terminal Step Factory in HttpPipeline may not be null"); + } + TerminalFactory = terminalStep; + } + + /// + /// Returns an HttpPipeline with the current state of this pipeline. + /// + public HttpPipeline Clone() => new HttpPipeline(terminal) { steps = this.steps.ToList(), pipeline = this.pipeline }; + + public ISendAsyncTerminalFactory TerminalFactory + { + get => terminal; + set + { + if (value == null) + { + throw new System.ArgumentNullException("TerminalFactory in HttpPipeline may not be null"); + } + terminal = value; + } + } + + public ISendAsync Pipeline + { + get + { + // if the pipeline has been created and not invalidated, return it. + if (this.pipeline != null) + { + return this.pipeline; + } + + // create the pipeline from scratch. + var next = terminal.Create(); + foreach (var factory in steps) + { + // skip factories that return null. + next = factory.Create(next) ?? next; + } + return this.pipeline = next; + } + } + + public int Count => steps.Count; + + public HttpPipeline Prepend(ISendAsyncFactory item) + { + if (item != null) + { + steps.Add(item); + pipeline = null; + } + return this; + } + + public HttpPipeline Append(SendAsyncStep item) + { + if (item != null) + { + Append(new SendAsyncFactory(item)); + } + return this; + } + + public HttpPipeline Prepend(SendAsyncStep item) + { + if (item != null) + { + Prepend(new SendAsyncFactory(item)); + } + return this; + } + public HttpPipeline Append(IEnumerable items) + { + if (items != null) + { + foreach (var item in items) + { + Append(new SendAsyncFactory(item)); + } + } + return this; + } + + public HttpPipeline Prepend(IEnumerable items) + { + if (items != null) + { + foreach (var item in items) + { + Prepend(new SendAsyncFactory(item)); + } + } + return this; + } + + public HttpPipeline Append(ISendAsyncFactory item) + { + if (item != null) + { + steps.Insert(0, item); + pipeline = null; + } + return this; + } + public HttpPipeline Prepend(IEnumerable items) + { + if (items != null) + { + foreach (var item in items) + { + Prepend(item); + } + } + return this; + } + + public HttpPipeline Append(IEnumerable items) + { + if (items != null) + { + foreach (var item in items) + { + Append(item); + } + } + return this; + } + + // you can use this as the ISendAsync Implementation + public Task SendAsync(HttpRequestMessage request, IEventListener callback) => Pipeline.SendAsync(request, callback); + } + + internal static partial class Extensions + { + internal static HttpRequestMessage CloneAndDispose(this HttpRequestMessage original, System.Uri requestUri = null, System.Net.Http.HttpMethod method = null) + { + using (original) + { + return original.Clone(requestUri, method); + } + } + + internal static Task CloneWithContentAndDispose(this HttpRequestMessage original, System.Uri requestUri = null, System.Net.Http.HttpMethod method = null) + { + using (original) + { + return original.CloneWithContent(requestUri, method); + } + } + + /// + /// Clones an HttpRequestMessage (without the content) + /// + /// Original HttpRequestMessage (Will be diposed before returning) + /// A clone of the HttpRequestMessage + internal static HttpRequestMessage Clone(this HttpRequestMessage original, System.Uri requestUri = null, System.Net.Http.HttpMethod method = null) + { + var clone = new HttpRequestMessage + { + Method = method ?? original.Method, + RequestUri = requestUri ?? original.RequestUri, + Version = original.Version, + }; + + foreach (KeyValuePair prop in original.Properties) + { + clone.Properties.Add(prop); + } + + foreach (KeyValuePair> header in original.Headers) + { + /* + **temporarily skip cloning telemetry related headers** + clone.Headers.TryAddWithoutValidation(header.Key, header.Value); + */ + if (!"x-ms-unique-id".Equals(header.Key) && !"x-ms-client-request-id".Equals(header.Key) && !"CommandName".Equals(header.Key) && !"FullCommandName".Equals(header.Key) && !"ParameterSetName".Equals(header.Key) && !"User-Agent".Equals(header.Key)) + { + clone.Headers.TryAddWithoutValidation(header.Key, header.Value); + } + } + + return clone; + } + + /// + /// Clones an HttpRequestMessage (including the content stream and content headers) + /// + /// Original HttpRequestMessage (Will be diposed before returning) + /// A clone of the HttpRequestMessage + internal static async Task CloneWithContent(this HttpRequestMessage original, System.Uri requestUri = null, System.Net.Http.HttpMethod method = null) + { + var clone = original.Clone(requestUri, method); + var stream = new System.IO.MemoryStream(); + if (original.Content != null) + { + await original.Content.CopyToAsync(stream).ConfigureAwait(false); + stream.Position = 0; + clone.Content = new StreamContent(stream); + if (original.Content.Headers != null) + { + foreach (var h in original.Content.Headers) + { + clone.Content.Headers.Add(h.Key, h.Value); + } + } + } + return clone; + } + } +} diff --git a/src/DataProtection/generated/runtime/InfoAttribute.cs b/src/DataProtection/generated/runtime/InfoAttribute.cs new file mode 100644 index 000000000000..1b9afbde639b --- /dev/null +++ b/src/DataProtection/generated/runtime/InfoAttribute.cs @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System; + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Class)] + public class InfoAttribute : Attribute + { + public bool Required { get; set; } = false; + public bool ReadOnly { get; set; } = false; + public Type[] PossibleTypes { get; set; } = new Type[0]; + public string Description { get; set; } = ""; + public string SerializedName { get; set; } = ""; + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class CompleterInfoAttribute : Attribute + { + public string Script { get; set; } = ""; + public string Name { get; set; } = ""; + public string Description { get; set; } = ""; + } + + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class DefaultInfoAttribute : Attribute + { + public string Script { get; set; } = ""; + public string Name { get; set; } = ""; + public string Description { get; set; } = ""; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Iso/IsoDate.cs b/src/DataProtection/generated/runtime/Iso/IsoDate.cs new file mode 100644 index 000000000000..266669bfc772 --- /dev/null +++ b/src/DataProtection/generated/runtime/Iso/IsoDate.cs @@ -0,0 +1,214 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Text; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal struct IsoDate + { + internal int Year { get; set; } // 0-3000 + + internal int Month { get; set; } // 1-12 + + internal int Day { get; set; } // 1-31 + + internal int Hour { get; set; } // 0-24 + + internal int Minute { get; set; } // 0-60 (60 is a special case) + + internal int Second { get; set; } // 0-60 (60 is used for leap seconds) + + internal double Millisecond { get; set; } // 0-999.9... + + internal TimeSpan Offset { get; set; } + + internal DateTimeKind Kind { get; set; } + + internal TimeSpan TimeOfDay => new TimeSpan(Hour, Minute, Second); + + internal DateTime ToDateTime() + { + if (Kind == DateTimeKind.Utc || Offset == TimeSpan.Zero) + { + return new DateTime(Year, Month, Day, Hour, Minute, Second, (int)Millisecond, DateTimeKind.Utc); + } + + return ToDateTimeOffset().DateTime; + } + + internal DateTimeOffset ToDateTimeOffset() + { + return new DateTimeOffset( + Year, + Month, + Day, + Hour, + Minute, + Second, + (int)Millisecond, + Offset + ); + } + + internal DateTime ToUtcDateTime() + { + return ToDateTimeOffset().UtcDateTime; + } + + public override string ToString() + { + var sb = new StringBuilder(); + + // yyyy-MM-dd + sb.Append($"{Year}-{Month:00}-{Day:00}"); + + if (TimeOfDay > new TimeSpan(0)) + { + sb.Append($"T{Hour:00}:{Minute:00}"); + + if (TimeOfDay.Seconds > 0) + { + sb.Append($":{Second:00}"); + } + } + + if (Offset.Ticks == 0) + { + sb.Append('Z'); // UTC + } + else + { + if (Offset.Ticks >= 0) + { + sb.Append('+'); + } + + sb.Append($"{Offset.Hours:00}:{Offset.Minutes:00}"); + } + + return sb.ToString(); + } + + internal static IsoDate FromDateTimeOffset(DateTimeOffset date) + { + return new IsoDate { + Year = date.Year, + Month = date.Month, + Day = date.Day, + Hour = date.Hour, + Minute = date.Minute, + Second = date.Second, + Offset = date.Offset, + Kind = date.Offset == TimeSpan.Zero ? DateTimeKind.Utc : DateTimeKind.Unspecified + }; + } + + private static readonly char[] timeSeperators = { ':', '.' }; + + internal static IsoDate Parse(string text) + { + var tzIndex = -1; + var timeIndex = text.IndexOf('T'); + + var builder = new IsoDate { Day = 1, Month = 1 }; + + // TODO: strip the time zone offset off the end + string dateTime = text; + string timeZone = null; + + if (dateTime.IndexOf('Z') > -1) + { + tzIndex = dateTime.LastIndexOf('Z'); + + builder.Kind = DateTimeKind.Utc; + } + else if (dateTime.LastIndexOf('+') > 10) + { + tzIndex = dateTime.LastIndexOf('+'); + } + else if (dateTime.LastIndexOf('-') > 10) + { + tzIndex = dateTime.LastIndexOf('-'); + } + + if (tzIndex > -1) + { + timeZone = dateTime.Substring(tzIndex); + dateTime = dateTime.Substring(0, tzIndex); + } + + string date = (timeIndex == -1) ? dateTime : dateTime.Substring(0, timeIndex); + + var dateParts = date.Split(Seperator.Dash); // '-' + + for (int i = 0; i < dateParts.Length; i++) + { + var part = dateParts[i]; + + switch (i) + { + case 0: builder.Year = int.Parse(part); break; + case 1: builder.Month = int.Parse(part); break; + case 2: builder.Day = int.Parse(part); break; + } + } + + if (timeIndex > -1) + { + string[] timeParts = dateTime.Substring(timeIndex + 1).Split(timeSeperators); + + for (int i = 0; i < timeParts.Length; i++) + { + var part = timeParts[i]; + + switch (i) + { + case 0: builder.Hour = int.Parse(part); break; + case 1: builder.Minute = int.Parse(part); break; + case 2: builder.Second = int.Parse(part); break; + case 3: builder.Millisecond = double.Parse("0." + part) * 1000; break; + } + } + } + + if (timeZone != null && timeZone != "Z") + { + var hours = int.Parse(timeZone.Substring(1, 2)); + var minutes = int.Parse(timeZone.Substring(4, 2)); + + if (timeZone[0] == '-') + { + hours = -hours; + minutes = -minutes; + } + + builder.Offset = new TimeSpan(hours, minutes, 0); + } + + return builder; + } + } + + /* + YYYY # eg 1997 + YYYY-MM # eg 1997-07 + YYYY-MM-DD # eg 1997-07-16 + YYYY-MM-DDThh:mmTZD # eg 1997-07-16T19:20+01:00 + YYYY-MM-DDThh:mm:ssTZD # eg 1997-07-16T19:20:30+01:00 + YYYY-MM-DDThh:mm:ss.sTZD # eg 1997-07-16T19:20:30.45+01:00 + + where: + + YYYY = four-digit year + MM = two-digit month (01=January, etc.) + DD = two-digit day of month (01 through 31) + hh = two digits of hour (00 through 23) (am/pm NOT allowed) + mm = two digits of minute (00 through 59) + ss = two digits of second (00 through 59) + s = one or more digits representing a decimal fraction of a second + TZD = time zone designator (Z or +hh:mm or -hh:mm) + */ +} diff --git a/src/DataProtection/generated/runtime/JsonType.cs b/src/DataProtection/generated/runtime/JsonType.cs new file mode 100644 index 000000000000..42d49340ac13 --- /dev/null +++ b/src/DataProtection/generated/runtime/JsonType.cs @@ -0,0 +1,18 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal enum JsonType + { + Null = 0, + Object = 1, + Array = 2, + Binary = 3, + Boolean = 4, + Date = 5, + Number = 6, + String = 7 + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Method.cs b/src/DataProtection/generated/runtime/Method.cs new file mode 100644 index 000000000000..b9b758e2d48c --- /dev/null +++ b/src/DataProtection/generated/runtime/Method.cs @@ -0,0 +1,19 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + internal static class Method + { + internal static System.Net.Http.HttpMethod Get = System.Net.Http.HttpMethod.Get; + internal static System.Net.Http.HttpMethod Put = System.Net.Http.HttpMethod.Put; + internal static System.Net.Http.HttpMethod Head = System.Net.Http.HttpMethod.Head; + internal static System.Net.Http.HttpMethod Post = System.Net.Http.HttpMethod.Post; + internal static System.Net.Http.HttpMethod Delete = System.Net.Http.HttpMethod.Delete; + internal static System.Net.Http.HttpMethod Options = System.Net.Http.HttpMethod.Options; + internal static System.Net.Http.HttpMethod Trace = System.Net.Http.HttpMethod.Trace; + internal static System.Net.Http.HttpMethod Patch = new System.Net.Http.HttpMethod("PATCH"); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Models/JsonMember.cs b/src/DataProtection/generated/runtime/Models/JsonMember.cs new file mode 100644 index 000000000000..6d284ddd2a05 --- /dev/null +++ b/src/DataProtection/generated/runtime/Models/JsonMember.cs @@ -0,0 +1,83 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Reflection; +using System.Runtime.Serialization; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + + + internal sealed class JsonMember + { + private readonly TypeDetails type; + + private readonly Func getter; + private readonly Action setter; + + internal JsonMember(PropertyInfo property, int defaultOrder) + { + getter = property.GetValue; + setter = property.SetValue; + + var dataMember = property.GetCustomAttribute(); + + Name = dataMember?.Name ?? property.Name; + Order = dataMember?.Order ?? defaultOrder; + EmitDefaultValue = dataMember?.EmitDefaultValue ?? true; + + this.type = TypeDetails.Get(property.PropertyType); + + CanRead = property.CanRead; + } + + internal JsonMember(FieldInfo field, int defaultOrder) + { + getter = field.GetValue; + setter = field.SetValue; + + var dataMember = field.GetCustomAttribute(); + + Name = dataMember?.Name ?? field.Name; + Order = dataMember?.Order ?? defaultOrder; + EmitDefaultValue = dataMember?.EmitDefaultValue ?? true; + + this.type = TypeDetails.Get(field.FieldType); + + CanRead = true; + } + + internal string Name { get; } + + internal int Order { get; } + + internal TypeDetails TypeDetails => type; + + internal Type Type => type.NonNullType; + + internal bool IsList => type.IsList; + + // Arrays, Sets, ... + internal Type ElementType => type.ElementType; + + internal IJsonConverter Converter => type.JsonConverter; + + internal bool EmitDefaultValue { get; } + + internal bool IsStringLike => type.IsStringLike; + + internal object DefaultValue => type.DefaultValue; + + internal bool CanRead { get; } + + #region Helpers + + internal object GetValue(object instance) => getter(instance); + + internal void SetValue(object instance, object value) => setter(instance, value); + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Models/JsonModel.cs b/src/DataProtection/generated/runtime/Models/JsonModel.cs new file mode 100644 index 000000000000..570b0de43e3a --- /dev/null +++ b/src/DataProtection/generated/runtime/Models/JsonModel.cs @@ -0,0 +1,89 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Reflection; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class JsonModel + { + private Dictionary map; + private readonly object _sync = new object(); + + private JsonModel(Type type, List members) + { + Type = type ?? throw new ArgumentNullException(nameof(type)); + Members = members ?? throw new ArgumentNullException(nameof(members)); + } + + internal string Name => Type.Name; + + internal Type Type { get; } + + internal List Members { get; } + + internal JsonMember this[string name] + { + get + { + if (map == null) + { + lock (_sync) + { + if (map == null) + { + map = new Dictionary(); + + foreach (JsonMember m in Members) + { + map[m.Name.ToLower()] = m; + } + } + } + } + + + map.TryGetValue(name.ToLower(), out JsonMember member); + + return member; + } + } + + internal static JsonModel FromType(Type type) + { + var members = new List(); + + int i = 0; + + // BindingFlags.Instance | BindingFlags.Public + + foreach (var member in type.GetFields()) + { + if (member.IsStatic) continue; + + if (member.IsDefined(typeof(IgnoreDataMemberAttribute))) continue; + + members.Add(new JsonMember(member, i)); + + i++; + } + + foreach (var member in type.GetProperties(BindingFlags.Public | BindingFlags.Instance)) + { + if (member.IsDefined(typeof(IgnoreDataMemberAttribute))) continue; + + members.Add(new JsonMember(member, i)); + + i++; + } + + members.Sort((a, b) => a.Order.CompareTo(b.Order)); // inline sort + + return new JsonModel(type, members); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Models/JsonModelCache.cs b/src/DataProtection/generated/runtime/Models/JsonModelCache.cs new file mode 100644 index 000000000000..24305ebb442b --- /dev/null +++ b/src/DataProtection/generated/runtime/Models/JsonModelCache.cs @@ -0,0 +1,19 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Runtime.CompilerServices; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal static class JsonModelCache + { + private static readonly ConditionalWeakTable cache + = new ConditionalWeakTable(); + + internal static JsonModel Get(Type type) => cache.GetValue(type, Create); + + private static JsonModel Create(Type type) => JsonModel.FromType(type); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/Collections/JsonArray.cs b/src/DataProtection/generated/runtime/Nodes/Collections/JsonArray.cs new file mode 100644 index 000000000000..90288237219a --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/Collections/JsonArray.cs @@ -0,0 +1,65 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public abstract partial class JsonArray : JsonNode, IEnumerable + { + internal override JsonType Type => JsonType.Array; + + internal abstract JsonType? ElementType { get; } + + public abstract int Count { get; } + + internal virtual bool IsSet => false; + + internal bool IsEmpty => Count == 0; + + #region IEnumerable + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + throw new NotImplementedException(); + } + + #endregion + + #region Static Helpers + + internal static JsonArray Create(short[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(int[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(long[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(decimal[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(float[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(string[] values) + => new XImmutableArray(values); + + internal static JsonArray Create(XBinary[] values) + => new XImmutableArray(values); + + #endregion + + internal static new JsonArray Parse(string text) + => (JsonArray)JsonNode.Parse(text); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/Collections/XImmutableArray.cs b/src/DataProtection/generated/runtime/Nodes/Collections/XImmutableArray.cs new file mode 100644 index 000000000000..ee30a3ad55eb --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/Collections/XImmutableArray.cs @@ -0,0 +1,62 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed class XImmutableArray : JsonArray, IEnumerable + { + private readonly T[] values; + private readonly JsonType elementType; + private readonly TypeCode elementCode; + + internal XImmutableArray(T[] values) + { + this.values = values ?? throw new ArgumentNullException(nameof(values)); + this.elementCode = System.Type.GetTypeCode(typeof(T)); + this.elementType = XHelper.GetElementType(this.elementCode); + } + + public override JsonNode this[int index] => + XHelper.Create(elementType, elementCode, values[index]); + + internal override JsonType? ElementType => elementType; + + public override int Count => values.Length; + + public bool IsReadOnly => true; + + #region IEnumerable Members + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (T value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (T value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + #endregion + + #region Static Constructor + + internal XImmutableArray Create(T[] items) + { + return new XImmutableArray(items); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/Collections/XList.cs b/src/DataProtection/generated/runtime/Nodes/Collections/XList.cs new file mode 100644 index 000000000000..635b5f490a3f --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/Collections/XList.cs @@ -0,0 +1,64 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed class XList : JsonArray, IEnumerable + { + private readonly IList values; + private readonly JsonType elementType; + private readonly TypeCode elementCode; + + internal XList(IList values) + { + this.values = values ?? throw new ArgumentNullException(nameof(values)); + this.elementCode = System.Type.GetTypeCode(typeof(T)); + this.elementType = XHelper.GetElementType(this.elementCode); + } + + public override JsonNode this[int index] => + XHelper.Create(elementType, elementCode, values[index]); + + internal override JsonType? ElementType => elementType; + + public override int Count => values.Count; + + public bool IsReadOnly => values.IsReadOnly; + + #region IList + + public void Add(T value) + { + values.Add(value); + } + + public bool Contains(T value) => values.Contains(value); + + #endregion + + #region IEnumerable Members + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/Collections/XNodeArray.cs b/src/DataProtection/generated/runtime/Nodes/Collections/XNodeArray.cs new file mode 100644 index 000000000000..35a9cbb38457 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/Collections/XNodeArray.cs @@ -0,0 +1,68 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed partial class XNodeArray : JsonArray, ICollection + { + private readonly List items; + + internal XNodeArray() + { + items = new List(); + } + + internal XNodeArray(params JsonNode[] values) + { + items = new List(values); + } + + public override JsonNode this[int index] => items[index]; + + internal override JsonType? ElementType => null; + + public bool IsReadOnly => false; + + public override int Count => items.Count; + + #region ICollection Members + + public void Add(JsonNode item) + { + items.Add(item); + } + + void ICollection.Clear() + { + items.Clear(); + } + + public bool Contains(JsonNode item) => items.Contains(item); + + void ICollection.CopyTo(JsonNode[] array, int arrayIndex) + { + items.CopyTo(array, arrayIndex); + } + + public bool Remove(JsonNode item) + { + return items.Remove(item); + } + + #endregion + + #region IEnumerable Members + + IEnumerator IEnumerable.GetEnumerator() + => items.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() + => items.GetEnumerator(); + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/Collections/XSet.cs b/src/DataProtection/generated/runtime/Nodes/Collections/XSet.cs new file mode 100644 index 000000000000..4bfa5479caa3 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/Collections/XSet.cs @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed class XSet : JsonArray, IEnumerable + { + private readonly HashSet values; + private readonly JsonType elementType; + private readonly TypeCode elementCode; + + internal XSet(IEnumerable values) + : this(new HashSet(values)) + { } + + internal XSet(HashSet values) + { + this.values = values ?? throw new ArgumentNullException(nameof(values)); + this.elementCode = System.Type.GetTypeCode(typeof(T)); + this.elementType = XHelper.GetElementType(this.elementCode); + } + + internal override JsonType Type => JsonType.Array; + + internal override JsonType? ElementType => elementType; + + public bool IsReadOnly => true; + + public override int Count => values.Count; + + internal override bool IsSet => true; + + #region IEnumerable Members + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + foreach (var value in values) + { + yield return XHelper.Create(elementType, elementCode, value); + } + } + + #endregion + + internal HashSet AsHashSet() => values; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonBoolean.cs b/src/DataProtection/generated/runtime/Nodes/JsonBoolean.cs new file mode 100644 index 000000000000..532063bf0e26 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonBoolean.cs @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed partial class JsonBoolean : JsonNode + { + internal static readonly JsonBoolean True = new JsonBoolean(true); + internal static readonly JsonBoolean False = new JsonBoolean(false); + + internal JsonBoolean(bool value) + { + Value = value; + } + + internal bool Value { get; } + + internal override JsonType Type => JsonType.Boolean; + + internal static new JsonBoolean Parse(string text) + { + switch (text) + { + case "false": return False; + case "true": return True; + + default: throw new ArgumentException($"Expected true or false. Was {text}."); + } + } + + #region Implicit Casts + + public static implicit operator bool(JsonBoolean data) => data.Value; + + public static implicit operator JsonBoolean(bool data) => new JsonBoolean(data); + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonDate.cs b/src/DataProtection/generated/runtime/Nodes/JsonDate.cs new file mode 100644 index 000000000000..a810f9dbdac8 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonDate.cs @@ -0,0 +1,173 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + + + internal sealed partial class JsonDate : JsonNode, IEquatable, IComparable + { + internal static bool AssumeUtcWhenKindIsUnspecified = true; + + private readonly DateTimeOffset value; + + internal JsonDate(DateTime value) + { + if (value.Kind == DateTimeKind.Unspecified && AssumeUtcWhenKindIsUnspecified) + { + value = DateTime.SpecifyKind(value, DateTimeKind.Utc); + } + + this.value = value; + } + + internal JsonDate(DateTimeOffset value) + { + this.value = value; + } + + internal override JsonType Type => JsonType.Date; + + #region Helpers + + internal DateTimeOffset ToDateTimeOffset() + { + return value; + } + + internal DateTime ToDateTime() + { + if (value.Offset == TimeSpan.Zero) + { + return value.UtcDateTime; + } + + return value.DateTime; + } + + internal DateTime ToUtcDateTime() => value.UtcDateTime; + + internal int ToUnixTimeSeconds() + { + return (int)value.ToUnixTimeSeconds(); + } + + internal long ToUnixTimeMilliseconds() + { + return (int)value.ToUnixTimeMilliseconds(); + } + + internal string ToIsoString() + { + return IsoDate.FromDateTimeOffset(value).ToString(); + } + + #endregion + + public override string ToString() + { + return ToIsoString(); + } + + internal static new JsonDate Parse(string text) + { + if (text == null) throw new ArgumentNullException(nameof(text)); + + // TODO support: unixtimeseconds.partialseconds + + if (text.Length > 4 && _IsNumber(text)) // UnixTime + { + var date = DateTimeOffset.FromUnixTimeSeconds(long.Parse(text)); + + return new JsonDate(date); + } + else if (text.Length <= 4 || text[4] == '-') // ISO: 2012- + { + return new JsonDate(IsoDate.Parse(text).ToDateTimeOffset()); + } + else + { + // NOT ISO ENCODED + // "Thu, 5 Apr 2012 16:59:01 +0200", + return new JsonDate(DateTimeOffset.Parse(text)); + } + } + + private static bool _IsNumber(string text) + { + foreach (var c in text) + { + if (!char.IsDigit(c)) return false; + } + + return true; + } + + internal static JsonDate FromUnixTime(int seconds) + { + return new JsonDate(DateTimeOffset.FromUnixTimeSeconds(seconds)); + } + + internal static JsonDate FromUnixTime(double seconds) + { + var milliseconds = (long)(seconds * 1000d); + + return new JsonDate(DateTimeOffset.FromUnixTimeMilliseconds(milliseconds)); + } + + #region Implicit Casts + + public static implicit operator DateTimeOffset(JsonDate value) + => value.ToDateTimeOffset(); + + public static implicit operator DateTime(JsonDate value) + => value.ToDateTime(); + + // From Date + public static implicit operator JsonDate(DateTimeOffset value) + { + return new JsonDate(value); + } + + public static implicit operator JsonDate(DateTime value) + { + return new JsonDate(value); + } + + // From String + public static implicit operator JsonDate(string value) + { + return Parse(value); + } + + #endregion + + #region Equality + + public override bool Equals(object obj) + { + return obj is JsonDate date && date.value == this.value; + } + + public bool Equals(JsonDate other) + { + return this.value == other.value; + } + + public override int GetHashCode() => value.GetHashCode(); + + #endregion + + #region IComparable Members + + int IComparable.CompareTo(JsonDate other) + { + return value.CompareTo(other.value); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonNode.cs b/src/DataProtection/generated/runtime/Nodes/JsonNode.cs new file mode 100644 index 000000000000..cd14d1e915b5 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonNode.cs @@ -0,0 +1,250 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.IO; +using System.Text; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + + + public abstract partial class JsonNode + { + internal abstract JsonType Type { get; } + + public virtual JsonNode this[int index] => throw new NotImplementedException(); + + public virtual JsonNode this[string name] + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + #region Type Helpers + + internal bool IsArray => Type == JsonType.Array; + + internal bool IsDate => Type == JsonType.Date; + + internal bool IsObject => Type == JsonType.Object; + + internal bool IsNumber => Type == JsonType.Number; + + internal bool IsNull => Type == JsonType.Null; + + #endregion + + internal void WriteTo(TextWriter textWriter, bool pretty = true) + { + var writer = new JsonWriter(textWriter, pretty); + + writer.WriteNode(this); + } + + internal T As() + where T : new() + => new JsonSerializer().Deseralize((JsonObject)this); + + internal T[] ToArrayOf() + { + return (T[])new JsonSerializer().DeserializeArray(typeof(T[]), (JsonArray)this); + } + + #region ToString Overrides + + public override string ToString() => ToString(pretty: true); + + internal string ToString(bool pretty) + { + var sb = new StringBuilder(); + + using (var writer = new StringWriter(sb)) + { + WriteTo(writer, pretty); + + return sb.ToString(); + } + } + + #endregion + + #region Static Constructors + + internal static JsonNode Parse(string text) + { + return Parse(new SourceReader(new StringReader(text))); + } + + internal static JsonNode Parse(TextReader textReader) + => Parse(new SourceReader(textReader)); + + private static JsonNode Parse(SourceReader sourceReader) + { + using (var parser = new JsonParser(sourceReader)) + { + return parser.ReadNode(); + } + } + + internal static JsonNode FromObject(object instance) + => new JsonSerializer().Serialize(instance); + + #endregion + + #region Implict Casts + + public static implicit operator string(JsonNode node) => node.ToString(); + + #endregion + + #region Explict Casts + + public static explicit operator DateTime(JsonNode node) + { + switch (node.Type) + { + case JsonType.Date: + return ((JsonDate)node).ToDateTime(); + + case JsonType.String: + return JsonDate.Parse(node.ToString()).ToDateTime(); + + case JsonType.Number: + var num = (JsonNumber)node; + + if (num.IsInteger) + { + return DateTimeOffset.FromUnixTimeSeconds(num).UtcDateTime; + } + else + { + return DateTimeOffset.FromUnixTimeMilliseconds((long)((double)num * 1000)).UtcDateTime; + } + } + + throw new ConversionException(node, typeof(DateTime)); + } + + public static explicit operator DateTimeOffset(JsonNode node) + { + switch (node.Type) + { + case JsonType.Date : return ((JsonDate)node).ToDateTimeOffset(); + case JsonType.String : return JsonDate.Parse(node.ToString()).ToDateTimeOffset(); + + case JsonType.Number: + var num = (JsonNumber)node; + + if (num.IsInteger) + { + return DateTimeOffset.FromUnixTimeSeconds(num); + } + else + { + return DateTimeOffset.FromUnixTimeMilliseconds((long)((double)num * 1000)); + } + + } + + throw new ConversionException(node, typeof(DateTimeOffset)); + } + + public static explicit operator float(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number : return (JsonNumber)node; + case JsonType.String : return float.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(float)); + } + + public static explicit operator double(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number : return (JsonNumber)node; + case JsonType.String : return double.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(double)); + } + + public static explicit operator decimal(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number: return (JsonNumber)node; + case JsonType.String: return decimal.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(decimal)); + } + + public static explicit operator Guid(JsonNode node) + => new Guid(node.ToString()); + + public static explicit operator short(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number : return (JsonNumber)node; + case JsonType.String : return short.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(short)); + } + + public static explicit operator int(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number : return (JsonNumber)node; + case JsonType.String : return int.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(int)); + } + + public static explicit operator long(JsonNode node) + { + switch (node.Type) + { + case JsonType.Number: return (JsonNumber)node; + case JsonType.String: return long.Parse(node.ToString()); + } + + throw new ConversionException(node, typeof(long)); + } + + public static explicit operator bool(JsonNode node) + => ((JsonBoolean)node).Value; + + public static explicit operator ushort(JsonNode node) + => (JsonNumber)node; + + public static explicit operator uint(JsonNode node) + => (JsonNumber)node; + + public static explicit operator ulong(JsonNode node) + => (JsonNumber)node; + + public static explicit operator TimeSpan(JsonNode node) + => TimeSpan.Parse(node.ToString()); + + public static explicit operator Uri(JsonNode node) + { + if (node.Type == JsonType.String) + { + return new Uri(node.ToString()); + } + + throw new ConversionException(node, typeof(Uri)); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonNumber.cs b/src/DataProtection/generated/runtime/Nodes/JsonNumber.cs new file mode 100644 index 000000000000..faed442beffe --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonNumber.cs @@ -0,0 +1,109 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed partial class JsonNumber : JsonNode + { + private readonly string value; + private readonly bool overflows = false; + + internal JsonNumber(string value) + { + this.value = value ?? throw new ArgumentNullException(nameof(value)); + } + + internal JsonNumber(int value) + { + this.value = value.ToString(); + } + + internal JsonNumber(long value) + { + this.value = value.ToString(); + + if (value > 9007199254740991) + { + overflows = true; + } + } + + internal JsonNumber(float value) + { + this.value = value.ToString(); + } + + internal JsonNumber(double value) + { + this.value = value.ToString(); + } + + internal override JsonType Type => JsonType.Number; + + internal string Value => value; + + #region Helpers + + internal bool Overflows => overflows; + + internal bool IsInteger => !value.Contains("."); + + internal bool IsFloat => value.Contains("."); + + #endregion + + #region Casting + + public static implicit operator byte(JsonNumber number) + => byte.Parse(number.Value); + + public static implicit operator short(JsonNumber number) + => short.Parse(number.Value); + + public static implicit operator int(JsonNumber number) + => int.Parse(number.Value); + + public static implicit operator long(JsonNumber number) + => long.Parse(number.value); + + public static implicit operator UInt16(JsonNumber number) + => ushort.Parse(number.Value); + + public static implicit operator UInt32(JsonNumber number) + => uint.Parse(number.Value); + + public static implicit operator UInt64(JsonNumber number) + => ulong.Parse(number.Value); + + public static implicit operator decimal(JsonNumber number) + => decimal.Parse(number.Value); + + public static implicit operator Double(JsonNumber number) + => double.Parse(number.value); + + public static implicit operator float(JsonNumber number) + => float.Parse(number.value); + + public static implicit operator JsonNumber(short data) + => new JsonNumber(data.ToString()); + + public static implicit operator JsonNumber(int data) + => new JsonNumber(data); + + public static implicit operator JsonNumber(long data) + => new JsonNumber(data); + + public static implicit operator JsonNumber(Single data) + => new JsonNumber(data.ToString()); + + public static implicit operator JsonNumber(double data) + => new JsonNumber(data.ToString()); + + #endregion + + public override string ToString() => value; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonObject.cs b/src/DataProtection/generated/runtime/Nodes/JsonObject.cs new file mode 100644 index 000000000000..247a83bcd8a3 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonObject.cs @@ -0,0 +1,172 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public partial class JsonObject : JsonNode, IDictionary + { + private readonly Dictionary items; + + internal JsonObject() + { + items = new Dictionary(); + } + + internal JsonObject(IEnumerable> properties) + { + if (properties == null) throw new ArgumentNullException(nameof(properties)); + + items = new Dictionary(); + + foreach (var field in properties) + { + items.Add(field.Key, field.Value); + } + } + + #region IDictionary Constructors + + internal JsonObject(IDictionary dic) + { + items = new Dictionary(dic.Count); + + foreach (var pair in dic) + { + Add(pair.Key, pair.Value); + } + } + + #endregion + + internal override JsonType Type => JsonType.Object; + + #region Add Overloads + + public void Add(string name, JsonNode value) => + items.Add(name, value); + + public void Add(string name, byte[] value) => + items.Add(name, new XBinary(value)); + + public void Add(string name, DateTime value) => + items.Add(name, new JsonDate(value)); + + public void Add(string name, int value) => + items.Add(name, new JsonNumber(value.ToString())); + + public void Add(string name, long value) => + items.Add(name, new JsonNumber(value.ToString())); + + public void Add(string name, float value) => + items.Add(name, new JsonNumber(value.ToString())); + + public void Add(string name, double value) => + items.Add(name, new JsonNumber(value.ToString())); + + public void Add(string name, string value) => + items.Add(name, new JsonString(value)); + + public void Add(string name, bool value) => + items.Add(name, new JsonBoolean(value)); + + public void Add(string name, Uri url) => + items.Add(name, new JsonString(url.AbsoluteUri)); + + public void Add(string name, string[] values) => + items.Add(name, new XImmutableArray(values)); + + public void Add(string name, int[] values) => + items.Add(name, new XImmutableArray(values)); + + #endregion + + #region ICollection> Members + + void ICollection>.Add(KeyValuePair item) + { + items.Add(item.Key, item.Value); + } + + void ICollection>.Clear() + { + items.Clear(); + } + + bool ICollection>.Contains(KeyValuePair item) => + throw new NotImplementedException(); + + void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex) => + throw new NotImplementedException(); + + + int ICollection>.Count => items.Count; + + bool ICollection>.IsReadOnly => false; + + bool ICollection>.Remove(KeyValuePair item) => + throw new NotImplementedException(); + + #endregion + + #region IDictionary Members + + public bool ContainsKey(string key) => items.ContainsKey(key); + + public ICollection Keys => items.Keys; + + public bool Remove(string key) => items.Remove(key); + + public bool TryGetValue(string key, out JsonNode value) => + items.TryGetValue(key, out value); + + public ICollection Values => items.Values; + + public override JsonNode this[string key] + { + get => items[key]; + set => items[key] = value; + } + + #endregion + + #region IEnumerable + + IEnumerator> IEnumerable>.GetEnumerator() + => items.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() + => items.GetEnumerator(); + + #endregion + + #region Helpers + + internal static new JsonObject FromObject(object instance) => + (JsonObject)new JsonSerializer().Serialize(instance); + + #endregion + + #region Static Constructors + + internal static JsonObject FromStream(Stream stream) + { + using (var tr = new StreamReader(stream)) + { + return (JsonObject)Parse(tr); + } + } + + internal static new JsonObject Parse(string text) + { + return (JsonObject)JsonNode.Parse(text); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/JsonString.cs b/src/DataProtection/generated/runtime/Nodes/JsonString.cs new file mode 100644 index 000000000000..116cfd9d5f26 --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/JsonString.cs @@ -0,0 +1,42 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed partial class JsonString : JsonNode, IEquatable + { + private readonly string value; + + internal JsonString(string value) + { + this.value = value ?? throw new ArgumentNullException(nameof(value)); + } + + internal override JsonType Type => JsonType.String; + + internal string Value => value; + + internal int Length => value.Length; + + #region #region Implicit Casts + + public static implicit operator string(JsonString data) => data.Value; + + public static implicit operator JsonString(string value) => new JsonString(value); + + #endregion + + public override int GetHashCode() => value.GetHashCode(); + + public override string ToString() => value; + + #region IEquatable + + bool IEquatable.Equals(JsonString other) => this.Value == other.Value; + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/XBinary.cs b/src/DataProtection/generated/runtime/Nodes/XBinary.cs new file mode 100644 index 000000000000..8de3907abafa --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/XBinary.cs @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed class XBinary : JsonNode + { + private readonly byte[] _value; + private readonly string _base64; + + internal XBinary(byte[] value) + { + _value = value ?? throw new ArgumentNullException(nameof(value)); + } + + internal XBinary(string base64EncodedString) + { + _base64 = base64EncodedString ?? throw new ArgumentNullException(nameof(base64EncodedString)); + } + + internal override JsonType Type => JsonType.Binary; + + internal byte[] Value => _value ?? Convert.FromBase64String(_base64); + + #region #region Implicit Casts + + public static implicit operator byte[] (XBinary data) => data.Value; + + public static implicit operator XBinary(byte[] data) => new XBinary(data); + + #endregion + + public override int GetHashCode() => Value.GetHashCode(); + + public override string ToString() => _base64 ?? Convert.ToBase64String(_value); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Nodes/XNull.cs b/src/DataProtection/generated/runtime/Nodes/XNull.cs new file mode 100644 index 000000000000..8a1ee892ac8f --- /dev/null +++ b/src/DataProtection/generated/runtime/Nodes/XNull.cs @@ -0,0 +1,15 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal sealed class XNull : JsonNode + { + internal static readonly XNull Instance = new XNull(); + + private XNull() { } + + internal override JsonType Type => JsonType.Null; + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/Exceptions/ParseException.cs b/src/DataProtection/generated/runtime/Parser/Exceptions/ParseException.cs new file mode 100644 index 000000000000..47da99508d48 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/Exceptions/ParseException.cs @@ -0,0 +1,24 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class ParserException : Exception + { + internal ParserException(string message) + : base(message) + { } + + internal ParserException(string message, SourceLocation location) + : base(message) + { + + Location = location; + } + + internal SourceLocation Location { get; } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/JsonParser.cs b/src/DataProtection/generated/runtime/Parser/JsonParser.cs new file mode 100644 index 000000000000..d2e7350fe675 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/JsonParser.cs @@ -0,0 +1,180 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public class JsonParser : IDisposable + { + private readonly TokenReader reader; + + internal JsonParser(TextReader reader) + : this(new SourceReader(reader)) { } + + internal JsonParser(SourceReader sourceReader) + { + if (sourceReader == null) + throw new ArgumentNullException(nameof(sourceReader)); + + this.reader = new TokenReader(new JsonTokenizer(sourceReader)); + + this.reader.Next(); // Start with the first token + } + + internal IEnumerable ReadNodes() + { + JsonNode node; + + while ((node = ReadNode()) != null) yield return node; + } + + internal JsonNode ReadNode() + { + if (reader.Current.Kind == TokenKind.Eof || reader.Current.IsTerminator) + { + return null; + } + + switch (reader.Current.Kind) + { + case TokenKind.LeftBrace : return ReadObject(); // { + case TokenKind.LeftBracket : return ReadArray(); // [ + + default: throw new ParserException($"Expected '{{' or '['. Was {reader.Current}."); + } + } + + private JsonNode ReadFieldValue() + { + // Boolean, Date, Null, Number, String, Uri + if (reader.Current.IsLiteral) + { + return ReadLiteral(); + } + else + { + switch (reader.Current.Kind) + { + case TokenKind.LeftBracket: return ReadArray(); + case TokenKind.LeftBrace : return ReadObject(); + + default: throw new ParserException($"Unexpected token reading field value. Was {reader.Current}."); + } + } + } + + private JsonNode ReadLiteral() + { + var literal = reader.Current; + + reader.Next(); // Read the literal token + + switch (literal.Kind) + { + case TokenKind.Boolean : return JsonBoolean.Parse(literal.Value); + case TokenKind.Null : return XNull.Instance; + case TokenKind.Number : return new JsonNumber(literal.Value); + case TokenKind.String : return new JsonString(literal.Value); + + default: throw new ParserException($"Unexpected token reading literal. Was {literal}."); + } + } + + internal JsonObject ReadObject() + { + reader.Ensure(TokenKind.LeftBrace, "object"); + + reader.Next(); // Read '{' (Object start) + + var jsonObject = new JsonObject(); + + // Read the object's fields until we reach the end of the object ('}') + while (reader.Current.Kind != TokenKind.RightBrace) + { + if (reader.Current.Kind == TokenKind.Comma) + { + reader.Next(); // Read ',' (Seperator) + } + + // Ensure we have a field name + reader.Ensure(TokenKind.String, "Expected field name"); + + var field = ReadField(); + + jsonObject.Add(field.Key, field.Value); + } + + reader.Next(); // Read '}' (Object end) + + return jsonObject; + } + + + // TODO: Use ValueTuple in C#7 + private KeyValuePair ReadField() + { + var fieldName = reader.Current.Value; + + reader.Next(); // Read the field name + + reader.Ensure(TokenKind.Colon, "field"); + + reader.Next(); // Read ':' (Field value indicator) + + return new KeyValuePair(fieldName, ReadFieldValue()); + } + + + internal JsonArray ReadArray() + { + reader.Ensure(TokenKind.LeftBracket, "array"); + + var array = new XNodeArray(); + + reader.Next(); // Read the '[' (Array start) + + // Read the array's items + while (reader.Current.Kind != TokenKind.RightBracket) + { + if (reader.Current.Kind == TokenKind.Comma) + { + reader.Next(); // Read the ',' (Seperator) + } + + if (reader.Current.IsLiteral) + { + array.Add(ReadLiteral()); // Boolean, Date, Number, Null, String, Uri + } + else if (reader.Current.Kind == TokenKind.LeftBracket) + { + array.Add(ReadArray()); // Array + } + else if (reader.Current.Kind == TokenKind.LeftBrace) + { + array.Add(ReadObject()); // Object + } + else + { + throw new ParserException($"Expected comma, literal, or object. Was {reader.Current}."); + } + } + + reader.Next(); // Read the ']' (Array end) + + return array; + } + + #region IDisposable + + public void Dispose() + { + reader.Dispose(); + } + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/JsonToken.cs b/src/DataProtection/generated/runtime/Parser/JsonToken.cs new file mode 100644 index 000000000000..0e09de10a2c1 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/JsonToken.cs @@ -0,0 +1,66 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal enum TokenKind + { + LeftBrace, // { Object start + RightBrace, // } Object end + + LeftBracket, // [ Array start + RightBracket, // ] Array end + + Comma, // , Comma + Colon, // : Value indicator + Dot, // . Access field indicator + Terminator, // \0 Stream terminator + + Boolean = 31, // true or false + Null = 33, // null + Number = 34, // i.e. -1.93, -1, 0, 1, 1.1 + String = 35, // i.e. "text" + + Eof = 50 + } + + internal /* readonly */ struct JsonToken + { + internal static readonly JsonToken BraceOpen = new JsonToken(TokenKind.LeftBrace, "{"); + internal static readonly JsonToken BraceClose = new JsonToken(TokenKind.RightBrace, "}"); + + internal static readonly JsonToken BracketOpen = new JsonToken(TokenKind.LeftBracket, "["); + internal static readonly JsonToken BracketClose = new JsonToken(TokenKind.RightBracket, "]"); + + internal static readonly JsonToken Colon = new JsonToken(TokenKind.Colon, ":"); + internal static readonly JsonToken Comma = new JsonToken(TokenKind.Comma, ","); + internal static readonly JsonToken Terminator = new JsonToken(TokenKind.Terminator, "\0"); + + internal static readonly JsonToken True = new JsonToken(TokenKind.Boolean, "true"); + internal static readonly JsonToken False = new JsonToken(TokenKind.Boolean, "false"); + internal static readonly JsonToken Null = new JsonToken(TokenKind.Null, "null"); + + internal static readonly JsonToken Eof = new JsonToken(TokenKind.Eof, null); + + internal JsonToken(TokenKind kind, string value) + { + Kind = kind; + Value = value; + } + + internal readonly TokenKind Kind; + + internal readonly string Value; + + public override string ToString() => Kind + ": " + Value; + + #region Helpers + + internal bool IsLiteral => (byte)Kind > 30 && (byte)Kind < 40; + + internal bool IsTerminator => Kind == TokenKind.Terminator; + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/JsonTokenizer.cs b/src/DataProtection/generated/runtime/Parser/JsonTokenizer.cs new file mode 100644 index 000000000000..1f1e1a8eda45 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/JsonTokenizer.cs @@ -0,0 +1,177 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Text; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + using System.IO; + + + public class JsonTokenizer : IDisposable + { + private readonly StringBuilder sb = new StringBuilder(); + + private readonly SourceReader reader; + + internal JsonTokenizer(TextReader reader) + : this(new SourceReader(reader)) { } + + internal JsonTokenizer(SourceReader reader) + { + this.reader = reader; + + reader.Next(); // Start with the first char + } + + internal JsonToken ReadNext() + { + reader.SkipWhitespace(); + + if (reader.IsEof) return JsonToken.Eof; + + switch (reader.Current) + { + case '"': return ReadQuotedString(); + + // Symbols + case '[' : reader.Next(); return JsonToken.BracketOpen; // Array start + case ']' : reader.Next(); return JsonToken.BracketClose; // Array end + case ',' : reader.Next(); return JsonToken.Comma; // Value seperator + case ':' : reader.Next(); return JsonToken.Colon; // Field value indicator + case '{' : reader.Next(); return JsonToken.BraceOpen; // Object start + case '}' : reader.Next(); return JsonToken.BraceClose; // Object end + case '\0' : reader.Next(); return JsonToken.Terminator; // Stream terminiator + + default: return ReadLiteral(); + } + } + + private JsonToken ReadQuotedString() + { + Expect('"', "quoted string indicator"); + + reader.Next(); // Read '"' (Starting quote) + + // Read until we reach an unescaped quote char + while (reader.Current != '"') + { + EnsureNotEof("quoted string"); + + if (reader.Current == '\\') + { + char escapedCharacter = reader.ReadEscapeCode(); + + sb.Append(escapedCharacter); + + continue; + } + + StoreCurrentCharacterAndReadNext(); + } + + reader.Next(); // Read '"' (Ending quote) + + return new JsonToken(TokenKind.String, value: sb.Extract()); + } + + private JsonToken ReadLiteral() + { + if (char.IsDigit(reader.Current) || + reader.Current == '-' || + reader.Current == '+') + { + return ReadNumber(); + } + + return ReadIdentifer(); + } + + private JsonToken ReadNumber() + { + // Read until we hit a non-numeric character + // -6.247737e-06 + // E + + while (char.IsDigit(reader.Current) + || reader.Current == '.' + || reader.Current == 'e' + || reader.Current == 'E' + || reader.Current == '-' + || reader.Current == '+') + { + StoreCurrentCharacterAndReadNext(); + } + + return new JsonToken(TokenKind.Number, value: sb.Extract()); + } + + int count = 0; + + private JsonToken ReadIdentifer() + { + count++; + + if (!char.IsLetter(reader.Current)) + { + throw new ParserException( + message : $"Expected literal (number, boolean, or null). Was '{reader.Current}'.", + location : reader.Location + ); + } + + // Read letters, numbers, and underscores '_' + while (char.IsLetterOrDigit(reader.Current) || reader.Current == '_') + { + StoreCurrentCharacterAndReadNext(); + } + + string text = sb.Extract(); + + switch (text) + { + case "true": return JsonToken.True; + case "false": return JsonToken.False; + case "null": return JsonToken.Null; + + default: return new JsonToken(TokenKind.String, text); + } + } + + private void Expect(char character, string description) + { + if (reader.Current != character) + { + throw new ParserException( + message: $"Expected {description} ('{character}'). Was '{reader.Current}'.", + location: reader.Location + ); + } + } + + private void EnsureNotEof(string tokenType) + { + if (reader.IsEof) + { + throw new ParserException( + message: $"Unexpected EOF while reading {tokenType}.", + location: reader.Location + ); + } + } + + private void StoreCurrentCharacterAndReadNext() + { + sb.Append(reader.Current); + + reader.Next(); + } + + public void Dispose() + { + reader.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/Location.cs b/src/DataProtection/generated/runtime/Parser/Location.cs new file mode 100644 index 000000000000..44e5bbed4bcb --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/Location.cs @@ -0,0 +1,43 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal struct SourceLocation + { + private int line; + private int column; + private int position; + + internal SourceLocation(int line = 0, int column = 0, int position = 0) + { + this.line = line; + this.column = column; + this.position = position; + } + + internal int Line => line; + + internal int Column => column; + + internal int Position => position; + + internal void Advance() + { + this.column++; + this.position++; + } + + internal void MarkNewLine() + { + this.line++; + this.column = 0; + } + + internal SourceLocation Clone() + { + return new SourceLocation(line, column, position); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/Readers/SourceReader.cs b/src/DataProtection/generated/runtime/Parser/Readers/SourceReader.cs new file mode 100644 index 000000000000..813bc08aeab2 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/Readers/SourceReader.cs @@ -0,0 +1,130 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Globalization; +using System.IO; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public sealed class SourceReader : IDisposable + { + private readonly TextReader source; + + private char current; + + private readonly SourceLocation location = new SourceLocation(); + + private bool isEof = false; + + internal SourceReader(TextReader textReader) + { + this.source = textReader ?? throw new ArgumentNullException(nameof(textReader)); + } + + /// + /// Advances to the next character + /// + internal void Next() + { + // Advance to the new line when we see a new line '\n'. + // A new line may be prefixed by a carriage return '\r'. + + if (current == '\n') + { + location.MarkNewLine(); + } + + int charCode = source.Read(); // -1 for end + + if (charCode >= 0) + { + current = (char)charCode; + } + else + { + // If we've already marked this as the EOF, throw an exception + if (isEof) + { + throw new EndOfStreamException("Cannot advance past end of stream."); + } + + isEof = true; + + current = '\0'; + } + + location.Advance(); + } + + internal void SkipWhitespace() + { + while (char.IsWhiteSpace(current)) + { + Next(); + } + } + + internal char ReadEscapeCode() + { + Next(); + + char escapedChar = current; + + Next(); // Consume escaped character + + switch (escapedChar) + { + // Special escape codes + case '"': return '"'; // " (Quotation mark) U+0022 + case '/': return '/'; // / (Solidus) U+002F + case '\\': return '\\'; // \ (Reverse solidus) U+005C + + // Control Characters + case '0': return '\0'; // Nul (0) U+0000 + case 'a': return '\a'; // Alert (7) + case 'b': return '\b'; // Backspace (8) U+0008 + case 'f': return '\f'; // Form feed (12) U+000C + case 'n': return '\n'; // Line feed (10) U+000A + case 'r': return '\r'; // Carriage return (13) U+000D + case 't': return '\t'; // Horizontal tab (9) U+0009 + case 'v': return '\v'; // Vertical tab + + // Unicode escape sequence + case 'u': return ReadUnicodeEscapeSequence(); // U+XXXX + + default: throw new Exception($"Unrecognized escape sequence '\\{escapedChar}'"); + } + } + + private readonly char[] hexCode = new char[4]; + + private char ReadUnicodeEscapeSequence() + { + hexCode[0] = current; Next(); + hexCode[1] = current; Next(); + hexCode[2] = current; Next(); + hexCode[3] = current; Next(); + + return Convert.ToChar(int.Parse( + s : new string(hexCode), + style : NumberStyles.HexNumber, + provider: NumberFormatInfo.InvariantInfo + )); + } + + internal char Current => current; + + internal bool IsEof => isEof; + + internal char Peek() => (char)source.Peek(); + + internal SourceLocation Location => location; + + public void Dispose() + { + source.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Parser/TokenReader.cs b/src/DataProtection/generated/runtime/Parser/TokenReader.cs new file mode 100644 index 000000000000..7b6154c5e764 --- /dev/null +++ b/src/DataProtection/generated/runtime/Parser/TokenReader.cs @@ -0,0 +1,39 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + public class TokenReader : IDisposable + { + private readonly JsonTokenizer tokenizer; + private JsonToken current; + + internal TokenReader(JsonTokenizer tokenizer) + { + this.tokenizer = tokenizer ?? throw new ArgumentNullException(nameof(tokenizer)); + } + + internal void Next() + { + current = tokenizer.ReadNext(); + } + + internal JsonToken Current => current; + + internal void Ensure(TokenKind kind, string readerName) + { + if (current.Kind != kind) + { + throw new ParserException($"Expected {kind} while reading {readerName}). Was {current}."); + } + } + + public void Dispose() + { + tokenizer.Dispose(); + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/PipelineMocking.cs b/src/DataProtection/generated/runtime/PipelineMocking.cs new file mode 100644 index 000000000000..48b2cacd2f98 --- /dev/null +++ b/src/DataProtection/generated/runtime/PipelineMocking.cs @@ -0,0 +1,254 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System.Threading.Tasks; + using System.Collections.Generic; + using System.Net.Http; + using System.Linq; + using System.Net; + using Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json; + + public enum MockMode + { + Live, + Record, + Playback, + + } + + public class PipelineMock + { + + private System.Collections.Generic.Stack scenario = new System.Collections.Generic.Stack(); + private System.Collections.Generic.Stack context = new System.Collections.Generic.Stack(); + private System.Collections.Generic.Stack description = new System.Collections.Generic.Stack(); + + private readonly string recordingPath; + private int counter = 0; + + public static implicit operator Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep(PipelineMock instance) => instance.SendAsync; + + public MockMode Mode { get; set; } = MockMode.Live; + public PipelineMock(string recordingPath) + { + this.recordingPath = recordingPath; + } + + public void PushContext(string text) => context.Push(text); + + public void PushDescription(string text) => description.Push(text); + + + public void PushScenario(string it) + { + // reset counter too + counter = 0; + + scenario.Push(it); + } + + public void PopContext() => context.Pop(); + + public void PopDescription() => description.Pop(); + + public void PopScenario() => scenario.Pop(); + + public void SetRecord() => Mode = MockMode.Record; + + public void SetPlayback() => Mode = MockMode.Playback; + + public void SetLive() => Mode = MockMode.Live; + + public string Scenario => (scenario.Count > 0 ? scenario.Peek() : "[NoScenario]"); + public string Description => (description.Count > 0 ? description.Peek() : "[NoDescription]"); + public string Context => (context.Count > 0 ? context.Peek() : "[NoContext]"); + + /// + /// Headers that we substitute out blank values for in the recordings + /// Add additional headers as necessary + /// + public static HashSet Blacklist = new HashSet(System.StringComparer.CurrentCultureIgnoreCase) { + "Authorization", + }; + + public Dictionary ForceResponseHeaders = new Dictionary(); + + internal static XImmutableArray Removed = new XImmutableArray(new string[] { "[Filtered]" }); + + internal static IEnumerable> FilterHeaders(IEnumerable>> headers) => headers.Select(header => new KeyValuePair(header.Key, Blacklist.Contains(header.Key) ? Removed : new XImmutableArray(header.Value.ToArray()))); + + internal static JsonNode SerializeContent(HttpContent content) => content == null ? XNull.Instance : SerializeContent(content.ReadAsByteArrayAsync().Result); + + internal static JsonNode SerializeContent(byte[] content) + { + if (null == content || content.Length == 0) + { + return XNull.Instance; + } + var first = content[0]; + var last = content[content.Length - 1]; + + // plaintext for JSON/SGML/XML/HTML/STRINGS/ARRAYS + if ((first == '{' && last == '}') || (first == '<' && last == '>') || (first == '[' && last == ']') || (first == '"' && last == '"')) + { + return new JsonString(System.Text.Encoding.UTF8.GetString(content)); + } + + // base64 for everyone else + return new JsonString(System.Convert.ToBase64String(content)); + } + + internal static byte[] DeserializeContent(string content) + { + if (string.IsNullOrWhiteSpace(content)) + { + return new byte[0]; + } + + if (content.EndsWith("==")) + { + try + { + return System.Convert.FromBase64String(content); + } + catch + { + // hmm. didn't work, return it as a string I guess. + } + } + return System.Text.Encoding.UTF8.GetBytes(content); + } + + public void SaveMessage(string rqKey, HttpRequestMessage request, HttpResponseMessage response) + { + var messages = System.IO.File.Exists(this.recordingPath) ? Load() : new JsonObject() ?? new JsonObject(); + messages[rqKey] = new JsonObject { + { "Request",new JsonObject { + { "Method", request.Method.Method }, + { "RequestUri", request.RequestUri }, + { "Content", SerializeContent( request.Content) }, + { "Headers", new JsonObject(FilterHeaders(request.Headers)) }, + { "ContentHeaders", request.Content == null ? new JsonObject() : new JsonObject(FilterHeaders(request.Content.Headers))} + } }, + {"Response", new JsonObject { + { "StatusCode", (int)response.StatusCode}, + { "Headers", new JsonObject(FilterHeaders(response.Headers))}, + { "ContentHeaders", new JsonObject(FilterHeaders(response.Content.Headers))}, + { "Content", SerializeContent(response.Content) }, + }} + }; + System.IO.File.WriteAllText(this.recordingPath, messages.ToString()); + } + + private JsonObject Load() + { + if (System.IO.File.Exists(this.recordingPath)) + { + try + { + return JsonObject.FromStream(System.IO.File.OpenRead(this.recordingPath)); + } + catch + { + throw new System.Exception($"Invalid recording file: '{recordingPath}'"); + } + } + + throw new System.ArgumentException($"Missing recording file: '{recordingPath}'", nameof(recordingPath)); + } + + public HttpResponseMessage LoadMessage(string rqKey) + { + var responses = Load(); + var message = responses.Property(rqKey); + + if (null == message) + { + throw new System.ArgumentException($"Missing Request '{rqKey}' in recording file", nameof(rqKey)); + } + + var sc = 0; + var reqMessage = message.Property("Request"); + var respMessage = message.Property("Response"); + + // --------------------------- deserialize response ---------------------------------------------------------------- + var response = new HttpResponseMessage + { + StatusCode = (HttpStatusCode)respMessage.NumberProperty("StatusCode", ref sc), + Content = new System.Net.Http.ByteArrayContent(DeserializeContent(respMessage.StringProperty("Content"))) + }; + + foreach (var each in respMessage.Property("Headers")) + { + response.Headers.TryAddWithoutValidation(each.Key, each.Value.ToArrayOf()); + } + + foreach (var frh in ForceResponseHeaders) + { + response.Headers.Remove(frh.Key); + response.Headers.TryAddWithoutValidation(frh.Key, frh.Value); + } + + foreach (var each in respMessage.Property("ContentHeaders")) + { + response.Content.Headers.TryAddWithoutValidation(each.Key, each.Value.ToArrayOf()); + } + + // --------------------------- deserialize request ---------------------------------------------------------------- + response.RequestMessage = new HttpRequestMessage + { + Method = new HttpMethod(reqMessage.StringProperty("Method")), + RequestUri = new System.Uri(reqMessage.StringProperty("RequestUri")), + Content = new System.Net.Http.ByteArrayContent(DeserializeContent(reqMessage.StringProperty("Content"))) + }; + + foreach (var each in reqMessage.Property("Headers")) + { + response.RequestMessage.Headers.TryAddWithoutValidation(each.Key, each.Value.ToArrayOf()); + } + foreach (var each in reqMessage.Property("ContentHeaders")) + { + response.RequestMessage.Content.Headers.TryAddWithoutValidation(each.Key, each.Value.ToArrayOf()); + } + + return response; + } + + public async Task SendAsync(HttpRequestMessage request, IEventListener callback, ISendAsync next) + { + counter++; + var rqkey = $"{Description}+{Context}+{Scenario}+${request.Method.Method}+{request.RequestUri}+{counter}"; + + switch (Mode) + { + case MockMode.Record: + //Add following code since the request.Content will be released after sendAsync + var requestClone = request; + if (requestClone.Content != null) + { + requestClone = await request.CloneWithContent(request.RequestUri, request.Method); + } + // make the call + var response = await next.SendAsync(request, callback); + + // save the message to the recording file + SaveMessage(rqkey, requestClone, response); + + // return the response. + return response; + + case MockMode.Playback: + // load and return the response. + return LoadMessage(rqkey); + + default: + // pass-thru, do nothing + return await next.SendAsync(request, callback); + } + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Response.cs b/src/DataProtection/generated/runtime/Response.cs new file mode 100644 index 000000000000..a3e5b3f9bc2e --- /dev/null +++ b/src/DataProtection/generated/runtime/Response.cs @@ -0,0 +1,27 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System; + using System.Threading.Tasks; + public class Response : EventData + { + public Response() : base() + { + } + } + + public class Response : Response + { + private Func> _resultDelegate; + private Task _resultValue; + + public Response(T value) : base() => _resultValue = Task.FromResult(value); + public Response(Func value) : base() => _resultDelegate = () => Task.FromResult(value()); + public Response(Func> value) : base() => _resultDelegate = value; + public Task Result => _resultValue ?? (_resultValue = this._resultDelegate()); + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Serialization/JsonSerializer.cs b/src/DataProtection/generated/runtime/Serialization/JsonSerializer.cs new file mode 100644 index 000000000000..843b92afc451 --- /dev/null +++ b/src/DataProtection/generated/runtime/Serialization/JsonSerializer.cs @@ -0,0 +1,350 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections; +using System.Collections.Generic; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class JsonSerializer + { + private int depth = 0; + + private SerializationOptions options = new SerializationOptions(); + + #region Deserialization + + internal T Deseralize(JsonObject json) + where T : new() + { + var contract = JsonModelCache.Get(typeof(T)); + + return (T)DeserializeObject(contract, json); + } + + internal object DeserializeObject(JsonModel contract, JsonObject json) + { + var instance = Activator.CreateInstance(contract.Type); + + depth++; + + // Ensure we don't recurse forever + if (depth > 5) throw new Exception("Depth greater than 5"); + + foreach (var field in json) + { + var member = contract[field.Key]; + + if (member != null) + { + var value = DeserializeValue(member, field.Value); + + member.SetValue(instance, value); + } + } + + depth--; + + return instance; + } + + private object DeserializeValue(JsonMember member, JsonNode value) + { + if (value.Type == JsonType.Null) return null; + + var type = member.Type; + + if (member.IsStringLike && value.Type != JsonType.String) + { + // Take the long path... + return DeserializeObject(JsonModelCache.Get(type), (JsonObject)value); + } + else if (member.Converter != null) + { + return member.Converter.FromJson(value); + } + else if (type.IsArray) + { + return DeserializeArray(type, (JsonArray)value); + } + else if (member.IsList) + { + return DeserializeList(type, (JsonArray)value); + } + else + { + var contract = JsonModelCache.Get(type); + + return DeserializeObject(contract, (JsonObject)value); + } + } + + private object DeserializeValue(Type type, JsonNode value) + { + if (type == null) throw new ArgumentNullException(nameof(type)); + + if (value.Type == JsonType.Null) return null; + + var typeDetails = TypeDetails.Get(type); + + if (typeDetails.JsonConverter != null) + { + return typeDetails.JsonConverter.FromJson(value); + } + else if (typeDetails.IsEnum) + { + return Enum.Parse(type, value.ToString(), ignoreCase: true); + } + else if (type.IsArray) + { + return DeserializeArray(type, (JsonArray)value); + } + else if (typeDetails.IsList) + { + return DeserializeList(type, (JsonArray)value); + } + else + { + var contract = JsonModelCache.Get(type); + + return DeserializeObject(contract, (JsonObject)value); + } + } + + internal Array DeserializeArray(Type type, JsonArray elements) + { + var elementType = type.GetElementType(); + + var elementTypeDetails = TypeDetails.Get(elementType); + + var array = Array.CreateInstance(elementType, elements.Count); + + int i = 0; + + if (elementTypeDetails.JsonConverter != null) + { + foreach (var value in elements) + { + array.SetValue(elementTypeDetails.JsonConverter.FromJson(value), i); + + i++; + } + } + else + { + foreach (var value in elements) + { + array.SetValue(DeserializeValue(elementType, value), i); + + i++; + } + } + + return array; + } + + internal IList DeserializeList(Type type, JsonArray jsonArray) + { + // TODO: Handle non-generic types + if (!type.IsGenericType) + throw new ArgumentException("Must be a generic type", nameof(type)); + + var elementType = type.GetGenericArguments()[0]; + + IList list; + + if (type.IsInterface) + { + // Create a concrete generic list + list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType)); + } + else + { + list = (IList)Activator.CreateInstance(type); + } + + foreach (var value in jsonArray) + { + list.Add(DeserializeValue(elementType, value)); + } + + return list; + } + + #endregion + + #region Serialization + + internal JsonNode Serialize(object instance) => + Serialize(instance, SerializationOptions.Default); + + internal JsonNode Serialize(object instance, string[] include) => + Serialize(instance, new SerializationOptions { Include = include }); + + internal JsonNode Serialize(object instance, SerializationOptions options) + { + this.options = options; + + if (instance == null) + { + return XNull.Instance; + } + + return ReadValue(instance.GetType(), instance); + } + + #region Readers + + internal JsonArray ReadArray(IEnumerable collection) + { + var array = new XNodeArray(); + + foreach (var item in collection) + { + array.Add(ReadValue(item.GetType(), item)); + } + + return array; + } + + internal IEnumerable> ReadProperties(object instance) + { + var contract = JsonModelCache.Get(instance.GetType()); + + foreach (var member in contract.Members) + { + string name = member.Name; + + if (options.PropertyNameTransformer != null) + { + name = options.PropertyNameTransformer.Invoke(name); + } + + // Skip the field if it's not included + if ((depth == 1 && !options.IsIncluded(name))) + { + continue; + } + + var value = member.GetValue(instance); + + if (!member.EmitDefaultValue && (value == null || (member.IsList && ((IList)value).Count == 0) || value.Equals(member.DefaultValue))) + { + continue; + } + else if (options.IgnoreNullValues && value == null) // Ignore null values + { + continue; + } + + // Transform the value if there is one + if (options.Transformations != null) + { + var transform = options.GetTransformation(name); + + if (transform != null) + { + value = transform.Transformer(value); + } + } + + yield return new KeyValuePair(name, ReadValue(member.TypeDetails, value)); + } + } + + private JsonObject ReadObject(object instance) + { + depth++; + + // TODO: Guard against a self referencing graph + if (depth > options.MaxDepth) + { + depth--; + + return new JsonObject(); + } + + var node = new JsonObject(ReadProperties(instance)); + + depth--; + + return node; + } + + private JsonNode ReadValue(Type type, object value) + { + if (value == null) + { + return XNull.Instance; + } + + var member = TypeDetails.Get(type); + + return ReadValue(member, value); + } + + private JsonNode ReadValue(TypeDetails type, object value) + { + if (value == null) + { + return XNull.Instance; + } + + if (type.JsonConverter != null) + { + return type.JsonConverter.ToJson(value); + } + else if (type.IsArray) + { + switch (Type.GetTypeCode(type.ElementType)) + { + case TypeCode.String: return CreateArray((string[])value); + case TypeCode.UInt16: return CreateArray((ushort[])value); + case TypeCode.UInt32: return CreateArray((uint[])value); + case TypeCode.UInt64: return CreateArray((ulong[])value); + case TypeCode.Int16: return CreateArray((short[])value); + case TypeCode.Int32: return CreateArray((int[])value); + case TypeCode.Int64: return CreateArray((long[])value); + case TypeCode.Single: return CreateArray((float[])value); + case TypeCode.Double: return CreateArray((double[])value); + default: return ReadArray((IEnumerable)value); + } + } + else if (value is IEnumerable) + { + if (type.IsList && type.ElementType != null) + { + switch (Type.GetTypeCode(type.ElementType)) + { + case TypeCode.String: return CreateList(value); + case TypeCode.UInt16: return CreateList(value); + case TypeCode.UInt32: return CreateList(value); + case TypeCode.UInt64: return CreateList(value); + case TypeCode.Int16: return CreateList(value); + case TypeCode.Int32: return CreateList(value); + case TypeCode.Int64: return CreateList(value); + case TypeCode.Single: return CreateList(value); + case TypeCode.Double: return CreateList(value); + } + } + + return ReadArray((IEnumerable)value); + } + else + { + // Complex object + return ReadObject(value); + } + } + + private XList CreateList(object value) => new XList((IList)value); + + private XImmutableArray CreateArray(T[] array) => new XImmutableArray(array); + + #endregion + + #endregion + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Serialization/PropertyTransformation.cs b/src/DataProtection/generated/runtime/Serialization/PropertyTransformation.cs new file mode 100644 index 000000000000..b31e17d512dc --- /dev/null +++ b/src/DataProtection/generated/runtime/Serialization/PropertyTransformation.cs @@ -0,0 +1,21 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class PropertyTransformation + { + internal PropertyTransformation(string name, Func transformer) + { + Name = name ?? throw new ArgumentNullException(nameof(name)); + Transformer = transformer ?? throw new ArgumentNullException(nameof(transformer)); + } + + internal string Name { get; } + + internal Func Transformer { get; } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Serialization/SerializationOptions.cs b/src/DataProtection/generated/runtime/Serialization/SerializationOptions.cs new file mode 100644 index 000000000000..9bdc4f4b794e --- /dev/null +++ b/src/DataProtection/generated/runtime/Serialization/SerializationOptions.cs @@ -0,0 +1,65 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Linq; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class SerializationOptions + { + internal static readonly SerializationOptions Default = new SerializationOptions(); + + internal SerializationOptions() { } + + internal SerializationOptions( + string[] include = null, + bool ingoreNullValues = false) + { + Include = include; + IgnoreNullValues = ingoreNullValues; + } + + internal string[] Include { get; set; } + + internal string[] Exclude { get; set; } + + internal bool IgnoreNullValues { get; set; } + + internal PropertyTransformation[] Transformations { get; set; } + + internal Func PropertyNameTransformer { get; set; } + + internal int MaxDepth { get; set; } = 5; + + internal bool IsIncluded(string name) + { + if (Exclude != null) + { + return !Exclude.Any(exclude => exclude.Equals(name, StringComparison.OrdinalIgnoreCase)); + } + else if (Include != null) + { + return Include.Any(exclude => exclude.Equals(name, StringComparison.OrdinalIgnoreCase)); + } + + return true; + } + + internal PropertyTransformation GetTransformation(string propertyName) + { + if (Transformations == null) return null; + + foreach (var t in Transformations) + { + if (t.Name.Equals(propertyName, StringComparison.OrdinalIgnoreCase)) + { + return t; + } + } + + return null; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/SerializationMode.cs b/src/DataProtection/generated/runtime/SerializationMode.cs new file mode 100644 index 000000000000..a89e291d1a14 --- /dev/null +++ b/src/DataProtection/generated/runtime/SerializationMode.cs @@ -0,0 +1,16 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + [System.Flags] + public enum SerializationMode + { + None = 0, + IncludeHeaders = 1 << 0, + IncludeReadOnly = 1 << 1, + + IncludeAll = IncludeHeaders | IncludeReadOnly + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/TypeConverterExtensions.cs b/src/DataProtection/generated/runtime/TypeConverterExtensions.cs new file mode 100644 index 000000000000..678912451dd2 --- /dev/null +++ b/src/DataProtection/generated/runtime/TypeConverterExtensions.cs @@ -0,0 +1,190 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System.IO; +using System.Linq; +using System.Xml; +using System.Xml.Serialization; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + internal static class TypeConverterExtensions + { + internal static T[] SelectToArray(object source, System.Func converter) + { + // null begets null + if (source == null) + { + return null; + } + + // single values and strings are just encapsulated in the array. + if (source is string || !(source is System.Collections.IEnumerable)) + { + try + { + return new T[] { (T)converter(source) }; + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + // silent conversion fail + } +#endif + return new T[0]; // empty result if couldn't convert. + } + + var result = new System.Collections.Generic.List(); + foreach (var each in (System.Collections.IEnumerable)source) + { + try + { + result.Add((T)converter(each)); + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + // silent conversion fail + } +#endif + } + return result.ToArray(); + } + + internal static System.Collections.Generic.IEnumerable GetPropertyKeys(this System.Collections.Generic.IDictionary dictionary) + { + if (null != dictionary) + { + foreach (var each in dictionary.Keys) + { + yield return each; + } + } + } + internal static System.Collections.Generic.IEnumerable GetPropertyKeys(this System.Collections.IDictionary dictionary) + { + if (null != dictionary) + { + foreach (var each in dictionary.Keys) + { + yield return each; + } + } + } + internal static System.Collections.Generic.IEnumerable GetPropertyKeys(this System.Management.Automation.PSObject instance) + { + if (null != instance) + { + foreach (var each in instance.Properties) + { + yield return each; + } + } + } + + internal static System.Collections.Generic.IEnumerable> GetFilteredProperties(this System.Collections.Generic.IDictionary instance, global::System.Collections.Generic.HashSet exclusions = null, global::System.Collections.Generic.HashSet inclusions = null) + { + return (null == instance || instance.Count == 0) ? + Enumerable.Empty>() : + instance.Keys + .Where(key => + !(true == exclusions?.Contains(key?.ToString())) + && (false != inclusions?.Contains(key?.ToString()))) + .Select(key => new System.Collections.Generic.KeyValuePair(key, instance[key])); + } + + internal static System.Collections.Generic.IEnumerable> GetFilteredProperties(this System.Collections.IDictionary instance, global::System.Collections.Generic.HashSet exclusions = null, global::System.Collections.Generic.HashSet inclusions = null) + { + return (null == instance || instance.Count == 0) ? + Enumerable.Empty>() : + instance.Keys.OfType() + .Where(key => + !(true == exclusions?.Contains(key?.ToString())) + && (false != inclusions?.Contains(key?.ToString()))) + .Select(key => new System.Collections.Generic.KeyValuePair(key, instance[key])); + } + + internal static System.Collections.Generic.IEnumerable> GetFilteredProperties(this System.Management.Automation.PSObject instance, global::System.Collections.Generic.HashSet exclusions = null, global::System.Collections.Generic.HashSet inclusions = null) + { + // new global::System.Collections.Generic.HashSet(System.StringComparer.InvariantCultureIgnoreCase) + return (null == instance || !instance.Properties.Any()) ? + Enumerable.Empty>() : + instance.Properties + .Where(property => + !(true == exclusions?.Contains(property.Name)) + && (false != inclusions?.Contains(property.Name))) + .Select(property => new System.Collections.Generic.KeyValuePair(property.Name, property.Value)); + } + + + internal static T GetValueForProperty(this System.Collections.Generic.IDictionary dictionary, string propertyName, T defaultValue, System.Func converter) + { + try + { + var key = System.Linq.Enumerable.FirstOrDefault(dictionary.Keys, each => System.String.Equals(each.ToString(), propertyName, System.StringComparison.CurrentCultureIgnoreCase)); + return key == null ? defaultValue : (T)converter(dictionary[key]); + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + } +#endif + return defaultValue; + } + internal static T GetValueForProperty(this System.Collections.IDictionary dictionary, string propertyName, T defaultValue, System.Func converter) + { + try + { + var key = System.Linq.Enumerable.FirstOrDefault(dictionary.Keys.OfType(), each => System.String.Equals(each.ToString(), propertyName, System.StringComparison.CurrentCultureIgnoreCase)); + return key == null ? defaultValue : (T)converter(dictionary[key]); + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + } +#endif + return defaultValue; + } + + internal static T GetValueForProperty(this System.Management.Automation.PSObject psObject, string propertyName, T defaultValue, System.Func converter) + { + try + { + var property = System.Linq.Enumerable.FirstOrDefault(psObject.Properties, each => System.String.Equals(each.Name.ToString(), propertyName, System.StringComparison.CurrentCultureIgnoreCase)); + return property == null ? defaultValue : (T)converter(property.Value); + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + } +#endif + return defaultValue; + } + } +} diff --git a/src/DataProtection/generated/runtime/UndeclaredResponseException.cs b/src/DataProtection/generated/runtime/UndeclaredResponseException.cs new file mode 100644 index 000000000000..ef2e94d62e8e --- /dev/null +++ b/src/DataProtection/generated/runtime/UndeclaredResponseException.cs @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System; + using System.Net.Http; + using System.Net.Http.Headers; + using static Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Extensions; + + public class RestException : Exception, IDisposable + { + public System.Net.HttpStatusCode StatusCode { get; set; } + public string Code { get; protected set; } + protected string message; + public HttpRequestMessage RequestMessage { get; protected set; } + public HttpResponseHeaders ResponseHeaders { get; protected set; } + + public string ResponseBody { get; protected set; } + public string ClientRequestId { get; protected set; } + public string RequestId { get; protected set; } + + public override string Message => message; + public string Action { get; protected set; } + + public RestException(System.Net.Http.HttpResponseMessage response) + { + StatusCode = response.StatusCode; + //CloneWithContent will not work here since the content is disposed after sendAsync + //Besides, it seems there is no need for the request content cloned here. + RequestMessage = response.RequestMessage.Clone(); + ResponseBody = response.Content.ReadAsStringAsync().Result; + ResponseHeaders = response.Headers; + + RequestId = response.GetFirstHeader("x-ms-request-id"); + ClientRequestId = response.GetFirstHeader("x-ms-client-request-id"); + + try + { + // try to parse the body as JSON, and see if a code and message are in there. + var json = Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonNode.Parse(ResponseBody) as Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json.JsonObject; + + // see if there is an error block in the body + json = json.Property("error") ?? json; + + { Code = If(json?.PropertyT("code"), out var c) ? (string)c : (string)StatusCode.ToString(); } + { message = If(json?.PropertyT("message"), out var m) ? (string)m : (string)Message; } + { Action = If(json?.PropertyT("action"), out var a) ? (string)a : (string)Action; } + } +#if DEBUG + catch (System.Exception E) + { + System.Console.Error.WriteLine($"{E.GetType().Name}/{E.Message}/{E.StackTrace}"); + } +#else + catch + { + // couldn't get the code/message from the body response. + // we'll create one below. + } +#endif + if (string.IsNullOrEmpty(message)) + { + if (StatusCode >= System.Net.HttpStatusCode.BadRequest && StatusCode < System.Net.HttpStatusCode.InternalServerError) + { + message = $"The server responded with a Request Error, Status: {StatusCode}"; + } + else if (StatusCode >= System.Net.HttpStatusCode.InternalServerError) + { + message = $"The server responded with a Server Error, Status: {StatusCode}"; + } + else + { + message = $"The server responded with an unrecognized response, Status: {StatusCode}"; + } + } + } + + public void Dispose() + { + ((IDisposable)RequestMessage).Dispose(); + } + } + + public class RestException : RestException + { + public T Error { get; protected set; } + public RestException(System.Net.Http.HttpResponseMessage response, T error) : base(response) + { + Error = error; + } + } + + + public class UndeclaredResponseException : RestException + { + public UndeclaredResponseException(System.Net.Http.HttpResponseMessage response) : base(response) + { + + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/Writers/JsonWriter.cs b/src/DataProtection/generated/runtime/Writers/JsonWriter.cs new file mode 100644 index 000000000000..c0712e782f1c --- /dev/null +++ b/src/DataProtection/generated/runtime/Writers/JsonWriter.cs @@ -0,0 +1,223 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Web; + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.Json +{ + internal class JsonWriter + { + const string indentation = " "; // 2 spaces + + private readonly bool pretty; + private readonly TextWriter writer; + + protected int currentLevel = 0; + + internal JsonWriter(TextWriter writer, bool pretty = true) + { + this.writer = writer ?? throw new ArgumentNullException(nameof(writer)); + this.pretty = pretty; + } + + internal void WriteNode(JsonNode node) + { + switch (node.Type) + { + case JsonType.Array: WriteArray((IEnumerable)node); break; + case JsonType.Object: WriteObject((JsonObject)node); break; + + // Primitives + case JsonType.Binary: WriteBinary((XBinary)node); break; + case JsonType.Boolean: WriteBoolean((bool)node); break; + case JsonType.Date: WriteDate((JsonDate)node); break; + case JsonType.Null: WriteNull(); break; + case JsonType.Number: WriteNumber((JsonNumber)node); break; + case JsonType.String: WriteString(node); break; + } + } + + internal void WriteArray(IEnumerable array) + { + currentLevel++; + + writer.Write('['); + + bool doIndentation = false; + + if (pretty) + { + foreach (var node in array) + { + if (node.Type == JsonType.Object || node.Type == JsonType.Array) + { + doIndentation = true; + + break; + } + } + } + + bool isFirst = true; + + foreach (JsonNode node in array) + { + if (!isFirst) writer.Write(','); + + if (doIndentation) + { + WriteIndent(); + } + else if (pretty) + { + writer.Write(' '); + } + + WriteNode(node); + + isFirst = false; + } + + currentLevel--; + + if (doIndentation) + { + WriteIndent(); + } + else if (pretty) + { + writer.Write(' '); + } + + writer.Write(']'); + } + + internal void WriteIndent() + { + if (pretty) + { + writer.Write(Environment.NewLine); + + for (int level = 0; level < currentLevel; level++) + { + writer.Write(indentation); + } + } + } + + internal void WriteObject(JsonObject obj) + { + currentLevel++; + + writer.Write('{'); + + bool isFirst = true; + + foreach (var field in obj) + { + if (!isFirst) writer.Write(','); + + WriteIndent(); + + WriteFieldName(field.Key); + + writer.Write(':'); + + if (pretty) + { + writer.Write(' '); + } + + // Write the field value + WriteNode(field.Value); + + isFirst = false; + } + + currentLevel--; + + WriteIndent(); + + writer.Write('}'); + } + + internal void WriteFieldName(string fieldName) + { + writer.Write('"'); + writer.Write(HttpUtility.JavaScriptStringEncode(fieldName)); + writer.Write('"'); + } + + #region Primitives + + internal void WriteBinary(XBinary value) + { + writer.Write('"'); + writer.Write(value.ToString()); + writer.Write('"'); + } + + internal void WriteBoolean(bool value) + { + writer.Write(value ? "true" : "false"); + } + + internal void WriteDate(JsonDate date) + { + if (date.ToDateTime().Year == 1) + { + WriteNull(); + } + else + { + writer.Write('"'); + writer.Write(date.ToIsoString()); + writer.Write('"'); + } + } + + internal void WriteNull() + { + writer.Write("null"); + } + + internal void WriteNumber(JsonNumber number) + { + if (number.Overflows) + { + writer.Write('"'); + writer.Write(number.Value); + writer.Write('"'); + } + else + { + writer.Write(number.Value); + } + } + + internal void WriteString(string text) + { + if (text == null) + { + WriteNull(); + } + else + { + writer.Write('"'); + + writer.Write(HttpUtility.JavaScriptStringEncode(text)); + + writer.Write('"'); + } + } + + #endregion + } +} + + +// TODO: Replace with System.Text.Json when available diff --git a/src/DataProtection/generated/runtime/delegates.cs b/src/DataProtection/generated/runtime/delegates.cs new file mode 100644 index 000000000000..66fd1869ecd8 --- /dev/null +++ b/src/DataProtection/generated/runtime/delegates.cs @@ -0,0 +1,23 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Net.Http; + using System.Threading; + using System.Threading.Tasks; + using GetEventData=System.Func; + + public delegate Task SendAsync(HttpRequestMessage request, IEventListener callback); + public delegate Task SendAsyncStep(HttpRequestMessage request, IEventListener callback, ISendAsync next); + public delegate Task SignalEvent(string id, CancellationToken token, GetEventData getEventData); + public delegate Task Event(EventData message); + public delegate void SynchEvent(EventData message); + public delegate Task OnResponse(Response message); + public delegate Task OnResponse(Response message); +} \ No newline at end of file diff --git a/src/DataProtection/how-to.md b/src/DataProtection/how-to.md new file mode 100644 index 000000000000..f22dadd9ac7f --- /dev/null +++ b/src/DataProtection/how-to.md @@ -0,0 +1,58 @@ +# How-To +This document describes how to develop for `Az.DataProtection`. + +## Building `Az.DataProtection` +To build, run the `build-module.ps1` at the root of the module directory. This will generate the proxy script cmdlets that are the cmdlets being exported by this module. After the build completes, the proxy script cmdlets will be output to the `exports` folder. To read more about the proxy script cmdlets, look at the [readme.md](exports/readme.md) in the `exports` folder. + +## Creating custom cmdlets +To add cmdlets that were not generated by the REST specification, use the `custom` folder. This folder allows you to add handwritten `.ps1` and `.cs` files. Currently, we support using `.ps1` scripts as new cmdlets or as additional low-level variants (via `ParameterSet`), and `.cs` files as low-level (variants) cmdlets that the exported script cmdlets call. We do not support exporting any `.cs` (dll) cmdlets directly. To read more about custom cmdlets, look at the [readme.md](custom/readme.md) in the `custom` folder. + +## Generating documentation +To generate documentation, the process is now integrated into the `build-module.ps1` script. If you don't want to run this process as part of `build-module.ps1`, you can provide the `-NoDocs` switch. If you want to run documentation generation after the build process, you may still run the `generate-help.ps1` script. Overall, the process will look at the documentation comments in the generated and custom cmdlets and types, and create `.md` files into the `docs` folder. Additionally, this pulls in any examples from the `examples` folder and adds them to the generated help markdown documents. To read more about examples, look at the [readme.md](examples/readme.md) in the `examples` folder. To read more about documentation, look at the [readme.md](docs/readme.md) in the `docs` folder. + +## Testing `Az.DataProtection` +To test the cmdlets, we use [Pester](https://github.com/pester/Pester). Tests scripts (`.ps1`) should be added to the `test` folder. To execute the Pester tests, run the `test-module.ps1` script. This will run all tests in `playback` mode within the `test` folder. To read more about testing cmdlets, look at the [readme.md](examples/readme.md) in the `examples` folder. + +## Packing `Az.DataProtection` +To pack `Az.DataProtection` for distribution, run the `pack-module.ps1` script. This will take the contents of multiple directories and certain root-folder files to create a `.nupkg`. The structure of the `.nupkg` is created so it can be loaded part of a [PSRepository](https://docs.microsoft.com/en-us/powershell/module/powershellget/register-psrepository). Additionally, this package is in a format for distribution to the [PSGallery](https://www.powershellgallery.com/). For signing an Azure module, please contact the [Azure PowerShell](https://github.com/Azure/azure-powershell) team. + +## Module Script Details +There are multiple scripts created for performing different actions for developing `Az.DataProtection`. +- `build-module.ps1` + - Builds the module DLL (`./bin/Az.DataProtection.private.dll`), creates the exported cmdlets and documentation, generates custom cmdlet test stubs and exported cmdlet example stubs, and updates `./Az.DataProtection.psd1` with Azure profile information. + - **Parameters**: [`Switch` parameters] + - `-Run`: After building, creates an isolated PowerShell session and loads `Az.DataProtection`. + - `-Test`: After building, runs the `Pester` tests defined in the `test` folder. + - `-Docs`: After building, generates the Markdown documents for the modules into the `docs` folder. + - `-Pack`: After building, packages the module into a `.nupkg`. + - `-Code`: After building, opens a VSCode window with the module's directory and runs (see `-Run`) the module. + - `-Release`: Builds the module in `Release` configuration (as opposed to `Debug` configuration). + - `-NoDocs`: Supresses writing the documentation markdown files as part of the cmdlet exporting process. + - `-Debugger`: Used when attaching the debugger in Visual Studio to the PowerShell session, and running the build process without recompiling the DLL. This suppresses running the script as an isolated process. +- `run-module.ps1` + - Creates an isolated PowerShell session and loads `Az.DataProtection` into the session. + - Same as `-Run` in `build-module.ps1`. + - **Parameters**: [`Switch` parameters] + - `-Code`: Opens a VSCode window with the module's directory. + - Same as `-Code` in `build-module.ps1`. +- `generate-help.ps1` + - Generates the Markdown documents for the modules into the `docs` folder. + - Same as `-Docs` in `build-module.ps1`. +- `test-module.ps1` + - Runs the `Pester` tests defined in the `test` folder. + - Same as `-Test` in `build-module.ps1`. +- `pack-module.ps1` + - Packages the module into a `.nupkg` for distribution. + - Same as `-Pack` in `build-module.ps1`. +- `generate-help.ps1` + - Generates the Markdown documents for the modules into the `docs` folder. + - Same as `-Docs` in `build-module.ps1`. + - This process is now integrated into `build-module.ps1` automatically. To disable, use `-NoDocs` when running `build-module.ps1`. +- `export-surface.ps1` + - Generates Markdown documents for both the cmdlet surface and the model (class) surface of the module. + - These files are placed into the `resources` folder. + - Used for investigating the surface of your module. These are *not* documentation for distribution. +- `check-dependencies.ps1` + - Used in `run-module.ps1` and `test-module.ps1` to verify dependent modules are available to run those tasks. + - It will download local (within the module's directory structure) versions of those modules as needed. + - This script *does not* need to be ran by-hand. \ No newline at end of file diff --git a/src/DataProtection/internal/Az.DataProtection.internal.psm1 b/src/DataProtection/internal/Az.DataProtection.internal.psm1 new file mode 100644 index 000000000000..eab6e8a9f498 --- /dev/null +++ b/src/DataProtection/internal/Az.DataProtection.internal.psm1 @@ -0,0 +1,38 @@ +# region Generated + # Load the private module dll + $null = Import-Module -PassThru -Name (Join-Path $PSScriptRoot '..\bin\Az.DataProtection.private.dll') + + # Get the private module's instance + $instance = [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Module]::Instance + + # Export nothing to clear implicit exports + Export-ModuleMember + + # Export proxy cmdlet scripts + $exportsPath = $PSScriptRoot + $directories = Get-ChildItem -Directory -Path $exportsPath + $profileDirectory = $null + if($instance.ProfileName) { + if(($directories | ForEach-Object { $_.Name }) -contains $instance.ProfileName) { + $profileDirectory = $directories | Where-Object { $_.Name -eq $instance.ProfileName } + } else { + # Don't export anything if the profile doesn't exist for the module + $exportsPath = $null + Write-Warning "Selected Azure profile '$($instance.ProfileName)' does not exist for module '$($instance.Name)'. No cmdlets were loaded." + } + } elseif(($directories | Measure-Object).Count -gt 0) { + # Load the last folder if no profile is selected + $profileDirectory = $directories | Select-Object -Last 1 + } + + if($profileDirectory) { + Write-Information "Loaded Azure profile '$($profileDirectory.Name)' for module '$($instance.Name)'" + $exportsPath = $profileDirectory.FullName + } + + if($exportsPath) { + Get-ChildItem -Path $exportsPath -Recurse -Include '*.ps1' -File | ForEach-Object { . $_.FullName } + $cmdletNames = Get-ScriptCmdlet -ScriptFolder $exportsPath + Export-ModuleMember -Function $cmdletNames -Alias (Get-ScriptCmdlet -ScriptFolder $exportsPath -AsAlias) + } +# endregion diff --git a/src/DataProtection/internal/Get-AzDataProtectionOperation.ps1 b/src/DataProtection/internal/Get-AzDataProtectionOperation.ps1 new file mode 100644 index 000000000000..69182aad7b97 --- /dev/null +++ b/src/DataProtection/internal/Get-AzDataProtectionOperation.ps1 @@ -0,0 +1,121 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns the list of available operations. +.Description +Returns the list of available operations. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperation +#> +function Get-AzDataProtectionOperation { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + List = 'Az.DataProtection.private\Get-AzDataProtectionOperation_List'; + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/internal/ProxyCmdletDefinitions.ps1 b/src/DataProtection/internal/ProxyCmdletDefinitions.ps1 new file mode 100644 index 000000000000..69182aad7b97 --- /dev/null +++ b/src/DataProtection/internal/ProxyCmdletDefinitions.ps1 @@ -0,0 +1,121 @@ + +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- + +<# +.Synopsis +Returns the list of available operations. +.Description +Returns the list of available operations. +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} +.Example +PS C:\> {{ Add code here }} + +{{ Add output here }} + +.Outputs +Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi +.Link +https://docs.microsoft.com/en-us/powershell/module/az.dataprotection/get-azdataprotectionoperation +#> +function Get-AzDataProtectionOperation { +[OutputType([Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api202001Alpha.IClientDiscoveryValueForSingleApi])] +[CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)] +param( + [Parameter()] + [Alias('AzureRMContext', 'AzureCredential')] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Azure')] + [System.Management.Automation.PSObject] + # The credentials, account, tenant, and subscription used for communication with Azure. + ${DefaultProfile}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Wait for .NET debugger to attach + ${Break}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be appended to the front of the pipeline + ${HttpPipelineAppend}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep[]] + # SendAsync Pipeline Steps to be prepended to the front of the pipeline + ${HttpPipelinePrepend}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Uri] + # The URI for the proxy server to use + ${Proxy}, + + [Parameter(DontShow)] + [ValidateNotNull()] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.PSCredential] + # Credentials for a proxy server to use for the remote call + ${ProxyCredential}, + + [Parameter(DontShow)] + [Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Category('Runtime')] + [System.Management.Automation.SwitchParameter] + # Use the default credentials for the proxy + ${ProxyUseDefaultCredentials} +) + +begin { + try { + $outBuffer = $null + if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { + $PSBoundParameters['OutBuffer'] = 1 + } + $parameterSet = $PSCmdlet.ParameterSetName + $mapping = @{ + List = 'Az.DataProtection.private\Get-AzDataProtectionOperation_List'; + } + $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand(($mapping[$parameterSet]), [System.Management.Automation.CommandTypes]::Cmdlet) + $scriptCmd = {& $wrappedCmd @PSBoundParameters} + $steppablePipeline = $scriptCmd.GetSteppablePipeline($MyInvocation.CommandOrigin) + $steppablePipeline.Begin($PSCmdlet) + } catch { + throw + } +} + +process { + try { + $steppablePipeline.Process($_) + } catch { + throw + } +} + +end { + try { + $steppablePipeline.End() + } catch { + throw + } +} +} diff --git a/src/DataProtection/internal/readme.md b/src/DataProtection/internal/readme.md new file mode 100644 index 000000000000..42739780796c --- /dev/null +++ b/src/DataProtection/internal/readme.md @@ -0,0 +1,14 @@ +# Internal +This directory contains a module to handle *internal only* cmdlets. Cmdlets that you **hide** in configuration are created here. For more information on hiding, see [cmdlet hiding](https://github.com/Azure/autorest/blob/master/docs/powershell/options.md#cmdlet-hiding-exportation-suppression). The cmdlets in this directory are generated at **build-time**. Do not put any custom code, files, cmdlets, etc. into this directory. Please use `..\custom` for all custom implementation. + +## Info +- Modifiable: no +- Generated: all +- Committed: no +- Packaged: yes + +## Details +The `Az.DataProtection.internal.psm1` file is generated to this folder. This module file handles the hidden cmdlets. These cmdlets will not be exported by `Az.DataProtection`. Instead, this sub-module is imported by the `..\custom\Az.DataProtection.custom.psm1` module, allowing you to use hidden cmdlets in your custom, exposed cmdlets. To call these cmdlets in your custom scripts, simply use [module-qualified calls](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_command_precedence?view=powershell-6#qualified-names). For example, `Az.DataProtection.internal\Get-Example` would call an internal cmdlet named `Get-Example`. + +## Purpose +This allows you to include REST specifications for services that you *do not wish to expose from your module*, but simply want to call within custom cmdlets. For example, if you want to make a custom cmdlet that uses `Storage` services, you could include a simplified `Storage` REST specification that has only the operations you need. When you run the generator and build this module, note the generated `Storage` cmdlets. Then, in your readme configuration, use [cmdlet hiding](https://github.com/Azure/autorest/blob/master/docs/powershell/options.md#cmdlet-hiding-exportation-suppression) on the `Storage` cmdlets and they will *only be exposed to the custom cmdlets* you want to write, and not be exported as part of `Az.DataProtection`. \ No newline at end of file diff --git a/src/DataProtection/license.txt b/src/DataProtection/license.txt new file mode 100644 index 000000000000..b9f3180fb9af --- /dev/null +++ b/src/DataProtection/license.txt @@ -0,0 +1,227 @@ +MICROSOFT SOFTWARE LICENSE TERMS + +MICROSOFT AZURE POWERSHELL + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +-----------------START OF LICENSE-------------------------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +-------------------END OF LICENSE------------------------------------------ + + +----------------START OF THIRD PARTY NOTICE-------------------------------- + + +The software includes the AutoMapper library ("AutoMapper"). The MIT License set out below is provided for informational purposes only. It is not the license that governs any part of the software. + +Provided for Informational Purposes Only + +AutoMapper + +The MIT License (MIT) +Copyright (c) 2010 Jimmy Bogard + + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + + + + +*************** + +The software includes Newtonsoft.Json. The MIT License set out below is provided for informational purposes only. It is not the license that governs any part of the software. + +Newtonsoft.Json + +The MIT License (MIT) +Copyright (c) 2007 James Newton-King +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------END OF THIRD PARTY NOTICE---------------------------------------- + diff --git a/src/DataProtection/pack-module.ps1 b/src/DataProtection/pack-module.ps1 new file mode 100644 index 000000000000..c22fad33d87b --- /dev/null +++ b/src/DataProtection/pack-module.ps1 @@ -0,0 +1,16 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +Write-Host -ForegroundColor Green 'Packing module...' +dotnet pack $PSScriptRoot --no-build /nologo +Write-Host -ForegroundColor Green '-------------Done-------------' \ No newline at end of file diff --git a/src/DataProtection/readme.md b/src/DataProtection/readme.md new file mode 100644 index 000000000000..2913405b2087 --- /dev/null +++ b/src/DataProtection/readme.md @@ -0,0 +1,27 @@ + +# Az.DataProtection +This directory contains the PowerShell module for the DataProtection service. + +--- +## Status +[![Az.DataProtection](https://img.shields.io/powershellgallery/v/Az.DataProtection.svg?style=flat-square&label=Az.DataProtection "Az.DataProtection")](https://www.powershellgallery.com/packages/Az.DataProtection/) + +## Info +- Modifiable: yes +- Generated: all +- Committed: yes +- Packaged: yes + +--- +## Detail +This module was primarily generated via [AutoRest](https://github.com/Azure/autorest) using the [PowerShell](https://github.com/Azure/autorest.powershell) extension. + +## Module Requirements +- [Az.Accounts module](https://www.powershellgallery.com/packages/Az.Accounts/), version 1.8.1 or greater + +## Authentication +AutoRest does not generate authentication code for the module. Authentication is handled via Az.Accounts by altering the HTTP payload before it is sent. + +## Development +For information on how to develop for `Az.DataProtection`, see [how-to.md](how-to.md). + diff --git a/src/DataProtection/resources/readme.md b/src/DataProtection/resources/readme.md new file mode 100644 index 000000000000..937f07f8fec2 --- /dev/null +++ b/src/DataProtection/resources/readme.md @@ -0,0 +1,11 @@ +# Resources +This directory can contain any additional resources for module that are not required at runtime. This directory **does not** get packaged with the module. If you have assets for custom implementation, place them into the `..\custom` folder. + +## Info +- Modifiable: yes +- Generated: no +- Committed: yes +- Packaged: no + +## Purpose +Use this folder to put anything you want to keep around as part of the repository for the module, but is not something that is required for the module. For example, development files, packaged builds, or additional information. This is only intended to be used in repositories where the module's output directory is cleaned, but tangential resources for the module want to remain intact. \ No newline at end of file diff --git a/src/DataProtection/run-module.ps1 b/src/DataProtection/run-module.ps1 new file mode 100644 index 000000000000..b46e77fd259c --- /dev/null +++ b/src/DataProtection/run-module.ps1 @@ -0,0 +1,59 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +param([switch]$Isolated, [switch]$Code) +$ErrorActionPreference = 'Stop' + +if(-not $Isolated) { + Write-Host -ForegroundColor Green 'Creating isolated process...' + $pwsh = [System.Diagnostics.Process]::GetCurrentProcess().Path + & "$pwsh" -NoExit -NoLogo -NoProfile -File $MyInvocation.MyCommand.Path @PSBoundParameters -Isolated + return +} + +$isAzure = $true +if($isAzure) { + . (Join-Path $PSScriptRoot 'check-dependencies.ps1') -Isolated -Accounts +} + +$localModulesPath = Join-Path $PSScriptRoot 'generated\modules' +if(Test-Path -Path $localModulesPath) { + $env:PSModulePath = "$localModulesPath$([IO.Path]::PathSeparator)$env:PSModulePath" +} + +$modulePsd1 = Get-Item -Path (Join-Path $PSScriptRoot './Az.DataProtection.psd1') +$modulePath = $modulePsd1.FullName +$moduleName = $modulePsd1.BaseName + +function Prompt { + Write-Host -NoNewline -ForegroundColor Green "PS $(Get-Location)" + Write-Host -NoNewline -ForegroundColor Gray ' [' + Write-Host -NoNewline -ForegroundColor White -BackgroundColor DarkCyan $moduleName + ']> ' +} + +# where we would find the launch.json file +$vscodeDirectory = New-Item -ItemType Directory -Force -Path (Join-Path $PSScriptRoot '.vscode') +$launchJson = Join-Path $vscodeDirectory 'launch.json' + +# if there is a launch.json file, let's just assume -Code, and update the file +if(($Code) -or (test-Path $launchJson) ) { + $launchContent = '{ "version": "0.2.0", "configurations":[{ "name":"Attach to PowerShell", "type":"coreclr", "request":"attach", "processId":"' + ([System.Diagnostics.Process]::GetCurrentProcess().Id) + '", "justMyCode":false }] }' + Set-Content -Path $launchJson -Value $launchContent + if($Code) { + # only launch vscode if they say -code + code $PSScriptRoot + } +} + +Import-Module -Name $modulePath \ No newline at end of file diff --git a/src/DataProtection/test-module.ps1 b/src/DataProtection/test-module.ps1 new file mode 100644 index 000000000000..99776b21bd50 --- /dev/null +++ b/src/DataProtection/test-module.ps1 @@ -0,0 +1,68 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +param([switch]$Isolated, [switch]$Live, [switch]$Record, [switch]$Playback) +$ErrorActionPreference = 'Stop' + +if(-not $Isolated) { + Write-Host -ForegroundColor Green 'Creating isolated process...' + $pwsh = [System.Diagnostics.Process]::GetCurrentProcess().Path + & "$pwsh" -NonInteractive -NoLogo -NoProfile -File $MyInvocation.MyCommand.Path @PSBoundParameters -Isolated + return +} + +$ProgressPreference = 'SilentlyContinue' +$baseName = $PSScriptRoot.BaseName +$requireResourceModule = (($baseName -ne "Resources") -and ($Record.IsPresent -or $Live.IsPresent)) +. (Join-Path $PSScriptRoot 'check-dependencies.ps1') -Isolated -Accounts:$false -Pester -Resources:$requireResourceModule +. ("$PSScriptRoot\test\utils.ps1") + +if ($requireResourceModule) { + $resourceModulePSD = Get-Item -Path (Join-Path $HOME '.PSSharedModules\Resources\Az.Resources.TestSupport.psd1') + Import-Module -Name $resourceModulePSD.FullName +} + +$localModulesPath = Join-Path $PSScriptRoot 'generated\modules' +if(Test-Path -Path $localModulesPath) { + $env:PSModulePath = "$localModulesPath$([IO.Path]::PathSeparator)$env:PSModulePath" +} + +$modulePsd1 = Get-Item -Path (Join-Path $PSScriptRoot './Az.DataProtection.psd1') +$modulePath = $modulePsd1.FullName +$moduleName = $modulePsd1.BaseName + +Import-Module -Name Pester +Import-Module -Name $modulePath + +$TestMode = 'playback' +if($Live) { + $TestMode = 'live' +} +if($Record) { + $TestMode = 'record' +} +try { + if ($TestMode -ne 'playback') { + setupEnv + } + $testFolder = Join-Path $PSScriptRoot 'test' + Invoke-Pester -Script @{ Path = $testFolder } -EnableExit -OutputFile (Join-Path $testFolder "$moduleName-TestResults.xml") +} +Finally +{ + if ($TestMode -ne 'playback') { + cleanupEnv + } +} + +Write-Host -ForegroundColor Green '-------------Done-------------' \ No newline at end of file diff --git a/src/DataProtection/test/Backup-AzDataProtectionBackupInstanceAdhoc.Tests.ps1 b/src/DataProtection/test/Backup-AzDataProtectionBackupInstanceAdhoc.Tests.ps1 new file mode 100644 index 000000000000..75424a4aa954 --- /dev/null +++ b/src/DataProtection/test/Backup-AzDataProtectionBackupInstanceAdhoc.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Backup-AzDataProtectionBackupInstanceAdhoc.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Backup-AzDataProtectionBackupInstanceAdhoc' { + It 'BackupExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Backup' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'BackupViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'BackupViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionBackupInstance.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionBackupInstance.Tests.ps1 new file mode 100644 index 000000000000..e6014fdfe867 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionBackupInstance.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionBackupInstance.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionBackupInstance' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Get1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionBackupPolicy.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionBackupPolicy.Tests.ps1 new file mode 100644 index 000000000000..d0cc878f26e9 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionBackupPolicy.Tests.ps1 @@ -0,0 +1,26 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionBackupPolicy.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionBackupPolicy' { + It 'List' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionBackupVault.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionBackupVault.Tests.ps1 new file mode 100644 index 000000000000..db600d0ec034 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionBackupVault.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionBackupVault.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionBackupVault' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionBackupVaultResource.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionBackupVaultResource.Tests.ps1 new file mode 100644 index 000000000000..ca72be6a0b2c --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionBackupVaultResource.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionBackupVaultResource.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionBackupVaultResource' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Get1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionExportJobsOperationResult.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionExportJobsOperationResult.Tests.ps1 new file mode 100644 index 000000000000..be9c9106f404 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionExportJobsOperationResult.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionExportJobsOperationResult.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionExportJobsOperationResult' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionJob.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionJob.Tests.ps1 new file mode 100644 index 000000000000..6ac4060b0ce2 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionJob.Tests.ps1 @@ -0,0 +1,26 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionJob.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionJob' { + It 'List' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionOperationResult.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionOperationResult.Tests.ps1 new file mode 100644 index 000000000000..6d50e38e91a7 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionOperationResult.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionOperationResult.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionOperationResult' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionOperationStatus.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionOperationStatus.Tests.ps1 new file mode 100644 index 000000000000..34cefdf3961c --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionOperationStatus.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionOperationStatus.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionOperationStatus' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionRecoveryPoint.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionRecoveryPoint.Tests.ps1 new file mode 100644 index 000000000000..cca62c5adb59 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionRecoveryPoint.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionRecoveryPoint.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionRecoveryPoint' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionRecoveryPointList.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionRecoveryPointList.Tests.ps1 new file mode 100644 index 000000000000..889b0509d5a0 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionRecoveryPointList.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionRecoveryPointList.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionRecoveryPointList' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 new file mode 100644 index 000000000000..71bb5ca73bba --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionResourceOperationGatekeeper.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionResourceOperationGatekeeper' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeperResource.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeperResource.Tests.ps1 new file mode 100644 index 000000000000..3477ec2ce6ec --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionResourceOperationGatekeeperResource.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionResourceOperationGatekeeperResource.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionResourceOperationGatekeeperResource' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Get1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity1' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Get-AzDataProtectionResourceOperationResultPatch.Tests.ps1 b/src/DataProtection/test/Get-AzDataProtectionResourceOperationResultPatch.Tests.ps1 new file mode 100644 index 000000000000..1bd19dcf3920 --- /dev/null +++ b/src/DataProtection/test/Get-AzDataProtectionResourceOperationResultPatch.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Get-AzDataProtectionResourceOperationResultPatch.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Get-AzDataProtectionResourceOperationResultPatch' { + It 'Get' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Prepare-AzDataProtectionDatasourceInfo.Tests.ps1 b/src/DataProtection/test/Prepare-AzDataProtectionDatasourceInfo.Tests.ps1 new file mode 100644 index 000000000000..afc3a3ec0de2 --- /dev/null +++ b/src/DataProtection/test/Prepare-AzDataProtectionDatasourceInfo.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Prepare-AzDataProtectionDatasourceInfo.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Prepare-AzDataProtectionDatasourceInfo' { + It 'GetById' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'GetByName' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Remove-AzDataProtectionBackupInstance.Tests.ps1 b/src/DataProtection/test/Remove-AzDataProtectionBackupInstance.Tests.ps1 new file mode 100644 index 000000000000..c4fcc6e47cb3 --- /dev/null +++ b/src/DataProtection/test/Remove-AzDataProtectionBackupInstance.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Remove-AzDataProtectionBackupInstance.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Remove-AzDataProtectionBackupInstance' { + It 'Delete' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'DeleteViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Remove-AzDataProtectionBackupPolicy.Tests.ps1 b/src/DataProtection/test/Remove-AzDataProtectionBackupPolicy.Tests.ps1 new file mode 100644 index 000000000000..97f9b7c8a4cc --- /dev/null +++ b/src/DataProtection/test/Remove-AzDataProtectionBackupPolicy.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Remove-AzDataProtectionBackupPolicy.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Remove-AzDataProtectionBackupPolicy' { + It 'Delete' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'DeleteViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Remove-AzDataProtectionBackupVault.Tests.ps1 b/src/DataProtection/test/Remove-AzDataProtectionBackupVault.Tests.ps1 new file mode 100644 index 000000000000..0a74e2b80848 --- /dev/null +++ b/src/DataProtection/test/Remove-AzDataProtectionBackupVault.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Remove-AzDataProtectionBackupVault.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Remove-AzDataProtectionBackupVault' { + It 'Delete' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'DeleteViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Remove-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 b/src/DataProtection/test/Remove-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 new file mode 100644 index 000000000000..8a90514697e1 --- /dev/null +++ b/src/DataProtection/test/Remove-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Remove-AzDataProtectionResourceOperationGatekeeper.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Remove-AzDataProtectionResourceOperationGatekeeper' { + It 'Delete' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'DeleteViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Set-AzDataProtectionBackupInstance.Tests.ps1 b/src/DataProtection/test/Set-AzDataProtectionBackupInstance.Tests.ps1 new file mode 100644 index 000000000000..8edc37ee696e --- /dev/null +++ b/src/DataProtection/test/Set-AzDataProtectionBackupInstance.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Set-AzDataProtectionBackupInstance.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Set-AzDataProtectionBackupInstance' { + It 'PutExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Put' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Set-AzDataProtectionBackupPolicy.Tests.ps1 b/src/DataProtection/test/Set-AzDataProtectionBackupPolicy.Tests.ps1 new file mode 100644 index 000000000000..d469bc8b65f6 --- /dev/null +++ b/src/DataProtection/test/Set-AzDataProtectionBackupPolicy.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Set-AzDataProtectionBackupPolicy.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Set-AzDataProtectionBackupPolicy' { + It 'PutExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Put' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Set-AzDataProtectionBackupVault.Tests.ps1 b/src/DataProtection/test/Set-AzDataProtectionBackupVault.Tests.ps1 new file mode 100644 index 000000000000..24d6644c4a14 --- /dev/null +++ b/src/DataProtection/test/Set-AzDataProtectionBackupVault.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Set-AzDataProtectionBackupVault.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Set-AzDataProtectionBackupVault' { + It 'PutExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Put' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Set-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 b/src/DataProtection/test/Set-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 new file mode 100644 index 000000000000..aa88ef5a823c --- /dev/null +++ b/src/DataProtection/test/Set-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Set-AzDataProtectionResourceOperationGatekeeper.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Set-AzDataProtectionResourceOperationGatekeeper' { + It 'PutExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Put' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRehydrate.Tests.ps1 b/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRehydrate.Tests.ps1 new file mode 100644 index 000000000000..3c4137ae3271 --- /dev/null +++ b/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRehydrate.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Start-AzDataProtectionBackupInstanceRehydrate.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Start-AzDataProtectionBackupInstanceRehydrate' { + It 'TriggerExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Trigger' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'TriggerViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'TriggerViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRestore.Tests.ps1 b/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRestore.Tests.ps1 new file mode 100644 index 000000000000..4227a1a646a5 --- /dev/null +++ b/src/DataProtection/test/Start-AzDataProtectionBackupInstanceRestore.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Start-AzDataProtectionBackupInstanceRestore.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Start-AzDataProtectionBackupInstanceRestore' { + It 'TriggerExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Trigger' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'TriggerViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'TriggerViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Start-AzDataProtectionExportJob.Tests.ps1 b/src/DataProtection/test/Start-AzDataProtectionExportJob.Tests.ps1 new file mode 100644 index 000000000000..a843e252b0c6 --- /dev/null +++ b/src/DataProtection/test/Start-AzDataProtectionExportJob.Tests.ps1 @@ -0,0 +1,22 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Start-AzDataProtectionExportJob.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Start-AzDataProtectionExportJob' { + It 'Trigger' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'TriggerViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Test-AzDataProtectionBackupInstance.Tests.ps1 b/src/DataProtection/test/Test-AzDataProtectionBackupInstance.Tests.ps1 new file mode 100644 index 000000000000..506046595ea8 --- /dev/null +++ b/src/DataProtection/test/Test-AzDataProtectionBackupInstance.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Test-AzDataProtectionBackupInstance.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Test-AzDataProtectionBackupInstance' { + It 'ValidateViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'ValidateExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Validate' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'ValidateViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Test-AzDataProtectionBackupInstanceRestore.Tests.ps1 b/src/DataProtection/test/Test-AzDataProtectionBackupInstanceRestore.Tests.ps1 new file mode 100644 index 000000000000..86073b5ef3e3 --- /dev/null +++ b/src/DataProtection/test/Test-AzDataProtectionBackupInstanceRestore.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Test-AzDataProtectionBackupInstanceRestore.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Test-AzDataProtectionBackupInstanceRestore' { + It 'ValidateExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Validate' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'ValidateViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'ValidateViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Test-AzDataProtectionBackupVaultNameAvailability.Tests.ps1 b/src/DataProtection/test/Test-AzDataProtectionBackupVaultNameAvailability.Tests.ps1 new file mode 100644 index 000000000000..997a08726988 --- /dev/null +++ b/src/DataProtection/test/Test-AzDataProtectionBackupVaultNameAvailability.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Test-AzDataProtectionBackupVaultNameAvailability.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Test-AzDataProtectionBackupVaultNameAvailability' { + It 'CheckExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Check' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'CheckViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'CheckViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Update-AzDataProtectionBackupVault.Tests.ps1 b/src/DataProtection/test/Update-AzDataProtectionBackupVault.Tests.ps1 new file mode 100644 index 000000000000..6188d19dc977 --- /dev/null +++ b/src/DataProtection/test/Update-AzDataProtectionBackupVault.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Update-AzDataProtectionBackupVault.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Update-AzDataProtectionBackupVault' { + It 'PatchExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Patch' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'PatchViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'PatchViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/Update-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 b/src/DataProtection/test/Update-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 new file mode 100644 index 000000000000..9e7eaf5b9137 --- /dev/null +++ b/src/DataProtection/test/Update-AzDataProtectionResourceOperationGatekeeper.Tests.ps1 @@ -0,0 +1,30 @@ +$loadEnvPath = Join-Path $PSScriptRoot 'loadEnv.ps1' +if (-Not (Test-Path -Path $loadEnvPath)) { + $loadEnvPath = Join-Path $PSScriptRoot '..\loadEnv.ps1' +} +. ($loadEnvPath) +$TestRecordingFile = Join-Path $PSScriptRoot 'Update-AzDataProtectionResourceOperationGatekeeper.Recording.json' +$currentPath = $PSScriptRoot +while(-not $mockingPath) { + $mockingPath = Get-ChildItem -Path $currentPath -Recurse -Include 'HttpPipelineMocking.ps1' -File + $currentPath = Split-Path -Path $currentPath -Parent +} +. ($mockingPath | Select-Object -First 1).FullName + +Describe 'Update-AzDataProtectionResourceOperationGatekeeper' { + It 'PatchExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'Patch' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'PatchViaIdentityExpanded' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } + + It 'PatchViaIdentity' -skip { + { throw [System.NotImplementedException] } | Should -Not -Throw + } +} diff --git a/src/DataProtection/test/loadEnv.ps1 b/src/DataProtection/test/loadEnv.ps1 new file mode 100644 index 000000000000..c4ebf2e8310c --- /dev/null +++ b/src/DataProtection/test/loadEnv.ps1 @@ -0,0 +1,28 @@ +# ---------------------------------------------------------------------------------- +# +# Copyright Microsoft Corporation +# 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. +# ---------------------------------------------------------------------------------- +$envFile = 'env.json' +if ($TestMode -eq 'live') { + $envFile = 'localEnv.json' +} + +if (Test-Path -Path (Join-Path $PSScriptRoot $envFile)) { + $envFilePath = Join-Path $PSScriptRoot $envFile +} else { + $envFilePath = Join-Path $PSScriptRoot '..\$envFile' +} +$env = @{} +if (Test-Path -Path $envFilePath) { + $env = Get-Content (Join-Path $PSScriptRoot $envFile) | ConvertFrom-Json + $PSDefaultParameterValues=@{"*:SubscriptionId"=$env.SubscriptionId; "*:Tenant"=$env.Tenant} +} \ No newline at end of file diff --git a/src/DataProtection/test/readme.md b/src/DataProtection/test/readme.md new file mode 100644 index 000000000000..7c752b4c8c43 --- /dev/null +++ b/src/DataProtection/test/readme.md @@ -0,0 +1,17 @@ +# Test +This directory contains the [Pester](https://www.powershellgallery.com/packages/Pester) tests to run for the module. We use Pester as it is the unofficial standard for PowerShell unit testing. Test stubs for custom cmdlets (created in `..\custom`) will be generated into this folder when `build-module.ps1` is ran. These test stubs will fail automatically, to indicate that tests should be written for custom cmdlets. + +## Info +- Modifiable: yes +- Generated: partial +- Committed: yes +- Packaged: no + +## Details +We allow three testing modes: *live*, *record*, and *playback*. These can be selected using the `-Live`, `-Record`, and `-Playback` switches respectively on the `test-module.ps1` script. This script will run through any `.Tests.ps1` scripts in the `test` folder. If you choose the *record* mode, it will create a `.Recording.json` file of the REST calls between the client and server. Then, when you choose *playback* mode, it will use the `.Recording.json` file to mock the communication between server and client. The *live* mode runs the same as the *record* mode; however, it doesn't create the `.Recording.json` file. + +## Purpose +Custom cmdlets generally encompass additional functionality not described in the REST specification, or combines functionality generated from the REST spec. To validate this functionality continues to operate as intended, creating tests that can be ran and re-ran against custom cmdlets is part of the framework. + +## Usage +To execute tests, run the `test-module.ps1`. To write tests, [this example](https://github.com/pester/Pester/blob/8b9cf4248315e44f1ac6673be149f7e0d7f10466/Examples/Planets/Get-Planet.Tests.ps1#L1) from the Pester repository is very useful for getting started. \ No newline at end of file diff --git a/src/DataProtection/test/utils.ps1 b/src/DataProtection/test/utils.ps1 new file mode 100644 index 000000000000..8876c288462c --- /dev/null +++ b/src/DataProtection/test/utils.ps1 @@ -0,0 +1,24 @@ +function RandomString([bool]$allChars, [int32]$len) { + if ($allChars) { + return -join ((33..126) | Get-Random -Count $len | % {[char]$_}) + } else { + return -join ((48..57) + (97..122) | Get-Random -Count $len | % {[char]$_}) + } +} +$env = @{} +function setupEnv() { + # Preload subscriptionId and tenant from context, which will be used in test + # as default. You could change them if needed. + $env.SubscriptionId = (Get-AzContext).Subscription.Id + $env.Tenant = (Get-AzContext).Tenant.Id + # For any resources you created for test, you should add it to $env here. + $envFile = 'env.json' + if ($TestMode -eq 'live') { + $envFile = 'localEnv.json' + } + set-content -Path (Join-Path $PSScriptRoot $envFile) -Value (ConvertTo-Json $env) +} +function cleanupEnv() { + # Clean resources you create for testing +} +

    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 EKMpiCU;qFB literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/StartupScripts/AzError.ps1 b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/StartupScripts/AzError.ps1 new file mode 100644 index 000000000000..e5247a5cf494 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/StartupScripts/AzError.ps1 @@ -0,0 +1,256 @@ +function Write-InstallationCheckToFile +{ + Param($installationchecks) + if (Get-Module AzureRM.Profile -ListAvailable -ErrorAction Ignore) + { + Write-Warning ("Both Az and AzureRM modules were detected on this machine. Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook. If you are running PowerShell in an environment you control you can use the 'Uninstall-AzureRm' cmdlet to remove all AzureRm modules from your machine. " + + "If you are running in Azure Automation, take care that none of your runbooks import both Az and AzureRM modules. More information can be found here: https://aka.ms/azps-migration-guide") + } + + $installationchecks.Add("AzSideBySideCheck","true") + try + { + if (Test-Path $pathToInstallationChecks -ErrorAction Ignore) + { + Remove-Item -Path $pathToInstallationChecks -ErrorAction Stop + } + + $pathToInstallDir = Split-Path -Path $pathToInstallationChecks -Parent -ErrorAction Stop + if (Test-Path $pathToInstallDir -ErrorAction Ignore) + { + New-Item -Path $pathToInstallationChecks -ErrorAction Stop -ItemType File -Value ($installationchecks | ConvertTo-Json -ErrorAction Stop) + } + } + catch + { + Write-Verbose "Installation checks failed to write to file." + } +} + +if (!($env:SkipAzInstallationChecks -eq "true")) +{ + $pathToInstallationChecks = Join-Path (Join-Path $HOME ".Azure") "AzInstallationChecks.json" + $installationchecks = @{} + if (!(Test-Path $pathToInstallationChecks -ErrorAction Ignore)) + { + Write-InstallationCheckToFile $installationchecks + } + else + { + try + { + ((Get-Content $pathToInstallationChecks -ErrorAction Stop) | ConvertFrom-Json -ErrorAction Stop).PSObject.Properties | Foreach { $installationchecks[$_.Name] = $_.Value } + } + catch + { + Write-InstallationCheckToFile $installationchecks + } + + if (!$installationchecks.ContainsKey("AzSideBySideCheck")) + { + Write-InstallationCheckToFile $installationchecks + } + } +} + +if (Get-Module AzureRM.profile -ErrorAction Ignore) +{ + Write-Warning ("AzureRM.Profile already loaded. Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook. If you are running PowerShell in an environment you control you can use the 'Uninstall-AzureRm' cmdlet to remove all AzureRm modules from your machine. " + + "If you are running in Azure Automation, take care that none of your runbooks import both Az and AzureRM modules. More information can be found here: https://aka.ms/azps-migration-guide.") + throw ("AzureRM.Profile already loaded. Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook. If you are running PowerShell in an environment you control you can use the 'Uninstall-AzureRm' cmdlet to remove all AzureRm modules from your machine. " + + "If you are running in Azure Automation, take care that none of your runbooks import both Az and AzureRM modules. More information can be found here: https://aka.ms/azps-migration-guide.") +} + +Update-TypeData -AppendPath (Join-Path (Get-Item $PSScriptRoot).Parent.FullName Accounts.types.ps1xml) -ErrorAction Ignore +# SIG # Begin signature block +# MIIjgwYJKoZIhvcNAQcCoIIjdDCCI3ACAQExDzANBglghkgBZQMEAgEFADB5Bgor +# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG +# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDT3s8rOGw0kP8l +# AbYXJ7G9hr2fOKBRtW5xO6fWVEOZvqCCDYEwggX/MIID56ADAgECAhMzAAABh3IX +# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p +# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw +# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u +# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB +# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH +# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d +# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ +# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV +# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE +# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw +# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1 +# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu +# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu +# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w +# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3 +# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx +# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy +# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K +# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV +# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr +# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx +# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe +# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g +# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf +# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI +# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5 +# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea +# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS +# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK +# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0 +# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0 +# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla +# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS +# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT +# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB +# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG +# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S +# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz +# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7 +# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u +# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33 +# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl +# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP +# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB +# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF +# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM +# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ +# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud +# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO +# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0 +# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p +# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y +# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB +# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw +# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA +# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY +# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj +# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd +# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ +# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf +# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ +# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j +# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B +# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96 +# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7 +# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I +# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWDCCFVQCAQEwgZUwfjELMAkG +# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx +# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z +# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN +# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor +# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgpH7D8Not +# WnytrY9dBBVdkjoPJbp/Jb5/OaJtNH+9PHMwQgYKKwYBBAGCNwIBDDE0MDKgFIAS +# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN +# BgkqhkiG9w0BAQEFAASCAQADqescXpA8SbdcE09Q27Fqhfhi/1FP4cLLDPtjqGIT +# q/R5g7OuG9YU8K6vSUgqCz3/6UOwvJhY14BUzh22T8MequctOPiK7YWWOyVHTe7R +# d1osPatNkFGbslnRh5Dj/ll2FEHXx2YWPMmmFbxwKEB5zaaQaSWTYQMdq94Cdw1S +# Ev2LfqQxqykqKb1hq3hU1Mn/NOL8PJ4RqUpsStLYTy4MYLrK3+amSuOOAcmDGV5h +# zcdni4PVGLx29Oafo+XOIaQSdEucx9yge6i/HSFLK3lFIQqq63g+AswvICCPqME8 +# 1cAdAS/MOl8P10fokuB0CaZLO0Et9ojmsomFQoJjEjlToYIS4jCCEt4GCisGAQQB +# gjcDAwExghLOMIISygYJKoZIhvcNAQcCoIISuzCCErcCAQMxDzANBglghkgBZQME +# AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB +# MDEwDQYJYIZIAWUDBAIBBQAEIJdKskEWgQvU28avEVv72vBaVdFCKmQg/2KtdodK +# DatLAgZerKV+QvIYEzIwMjAwNTI4MDcxMjI4LjYwMlowBIACAfSggdCkgc0wgcox +# CzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg +# SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg +# RVNOOkZGMDYtNEJDMy1COURBMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt +# cCBTZXJ2aWNloIIOOTCCBPEwggPZoAMCAQICEzMAAAEUNSdF6rbIbE8AAAAAARQw +# DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 +# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh +# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN +# MTkxMDIzMjMxOTM3WhcNMjEwMTIxMjMxOTM3WjCByjELMAkGA1UEBhMCVVMxCzAJ +# BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg +# Q29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv +# bnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046RkYwNi00QkMzLUI5 +# REExJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNlcnZpY2UwggEiMA0G +# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCdvi0k88S1dkCr0Rb9Vgwts1CaVvWj +# i4j8Z6oJteo97xmiVPQbsXEbI7B8SEULpdsTxnLpWlk0lfGayBLb6mqwYyqS+e1i +# Skkl6pOdFuh00sfjHmOGhKhww2Tyx4NpoHBnAc/qbL4YATCnVrywYDOzs27m67Mv +# lKLiL9KHovfG1r7FHzyp1tbKQhctJWk8QEwSPUZGZt5MDTpd1Dh1z5zVQ2gz2A5I +# TBvVMWOoNY3L6co/9NVg4FoGrU9CT45rbX8d2x+DRXLSluVNn5CYse/fEhRVrZO6 +# UiMKYMfTFsNWk5gf/0Bfr5IMCpfKdAltdzcMjqG2+OfDwURGNJmbfIz/AgMBAAGj +# ggEbMIIBFzAdBgNVHQ4EFgQUUFSPcOb+hJN3LEanWWXcI4uJPAIwHwYDVR0jBBgw +# FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov +# L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB +# XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0 +# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx +# MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN +# BgkqhkiG9w0BAQsFAAOCAQEAGSKMNfc4B8frM9Abi+4YqtynPH8Q8GppZluhR0AH +# 3mPEUPfiKWGM4nxWqr9VgJIFmgCh5hm/ssthGNHpnwVDWHe387yhXMIFFafhZJqf +# FnOk02md5bK6sNVQTdgq1pW/E7lEIaWFTE+O8WkNYg+hZEunA5G+zfam+dO1gE0g +# eM303kGkS5PsbGRdnhqxddE+0S/+qhgC6d2Nvu0NYU3zc9WF5wp7esRcYCCJz+OD +# TrPecbLtawY0u7EwelI+eUx76jFg8+Er7x+USdAPDhHeGLItI0nDf9zyxFrzvChq +# aNnbbHFK8kkCqVZb+570CBJTP6HPUblA/QN8rqhnplTnGjCCBnEwggRZoAMCAQIC +# CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD +# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy +# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp +# ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx +# NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV +# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG +# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3 +# DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF +# ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD +# DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx +# z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1 +# rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc +# sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB +# 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF +# bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +# EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD +# VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv +# cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB +# BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j +# ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB +# kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv +# c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe +# MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA +# LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx +# vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS +# inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1 +# L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO +# M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4 +# pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45 +# V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x +# 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe +# gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn +# QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp +# 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT +# X4/edIhJEqGCAsswggI0AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzELMAkG +# A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +# b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u +# cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpGRjA2LTRCQzMtQjlE +# QTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2VydmljZaIjCgEBMAcG +# BSsOAwIaAxUA4ATkl0QTu3uFAmVR+pqOPC6L4GeggYMwgYCkfjB8MQswCQYDVQQG +# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG +# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg +# VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOJ5angwIhgPMjAy +# MDA1MjgwNjM4NDhaGA8yMDIwMDUyOTA2Mzg0OFowdDA6BgorBgEEAYRZCgQBMSww +# KjAKAgUA4nlqeAIBADAHAgEAAgIK1TAHAgEAAgIRsTAKAgUA4nq7+AIBADA2Bgor +# BgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIBAAID +# AYagMA0GCSqGSIb3DQEBBQUAA4GBABwFm0eXycqRfMePixoa1hhsN/r7IrH99F9W +# LXEMfVJUc4tT+cFj1sv0WlR2gTghoTnLpX2ygygH0NuXQZwa9nluP9+X1q9jvS+T +# C+kCGa29l4rd4gyLsgVbuK7cqj4Z5OsLSYPCIffa5vJ2kp3vejOGKvFQKWcIT0nU +# g5yTF0DnMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh +# c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD +# b3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIw +# MTACEzMAAAEUNSdF6rbIbE8AAAAAARQwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqG +# SIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgQMgJLtxjbTsb +# 0Wn4LmdF4XpGfyeP4+d6F/0G5ZgNeGIwgfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHk +# MIG9BCBMEX+t50VMGPQQXEsFWfGBi8gat6mIS7jV9Lz5rc3rOjCBmDCBgKR+MHwx +# CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRt +# b25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMTHU1p +# Y3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABFDUnReq2yGxPAAAAAAEU +# MCIEIOmTT4+egSoVMVgSLJFNe+N6QV4tf0yXd8AdmQrqT1XAMA0GCSqGSIb3DQEB +# CwUABIIBAHs7bizq/5z/Q7AWwW33bnyRnqgCuo+3aYAogjpHLA3w/DWhDTDhBSxj +# vpPUySpnz73u9jR54vmLNeaidHtO+KEhxqpcPzEikHn36DsOeO70qdaG39UCHN1V +# dP+uDTuqU3h2S7Fr6iSgvDTI9hmzz/jIt3YuCan/NRB/7yfjd+PWpCndeeEkUXLS +# UqXYne23+XdN7J3x/7yHWug2LAICxNCo0aqW+lJ5zqptCFwJHoSonw3oEibSnb/9 +# zz9d6DtJW4d5MTId+6PoHRm8V9sKT62j5tl9u9c2oJqx7LqgXd7iZY5xn9fyOrYO +# +IG7L+Tbxu8TWBrdPjDHM77QhIlqnj8= +# SIG # End signature block diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/[Content_Types].xml b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/[Content_Types].xml new file mode 100644 index 000000000000..3ab91a235bd3 --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/[Content_Types].xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/_rels/.rels b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/_rels/.rels new file mode 100644 index 000000000000..432c371c6a8b --- /dev/null +++ b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/_rels/.rels @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/AsyncCommandRuntime.cs b/src/DataProtection/generated/runtime/AsyncCommandRuntime.cs new file mode 100644 index 000000000000..bf438282fc32 --- /dev/null +++ b/src/DataProtection/generated/runtime/AsyncCommandRuntime.cs @@ -0,0 +1,828 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + using System.Management.Automation; + using System.Management.Automation.Host; + using System.Threading; + using System.Linq; + + internal interface IAsyncCommandRuntimeExtensions + { + Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep Wrap(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep func); + System.Collections.Generic.IEnumerable Wrap(System.Collections.Generic.IEnumerable funcs); + + T ExecuteSync(System.Func step); + } + + public class AsyncCommandRuntime : System.Management.Automation.ICommandRuntime2, IAsyncCommandRuntimeExtensions, System.IDisposable + { + private ICommandRuntime2 originalCommandRuntime; + private System.Threading.Thread originalThread; + public bool AllowInteractive { get; set; } = false; + + public CancellationToken cancellationToken; + SemaphoreSlim semaphore = new SemaphoreSlim(1, 1); + ManualResetEventSlim readyToRun = new ManualResetEventSlim(false); + ManualResetEventSlim completed = new ManualResetEventSlim(false); + + System.Action runOnMainThread; + + private System.Management.Automation.PSCmdlet cmdlet; + + internal AsyncCommandRuntime(System.Management.Automation.PSCmdlet cmdlet, CancellationToken cancellationToken) + { + this.originalCommandRuntime = cmdlet.CommandRuntime as ICommandRuntime2; + this.originalThread = System.Threading.Thread.CurrentThread; + this.cancellationToken = cancellationToken; + this.cmdlet = cmdlet; + cmdlet.CommandRuntime = this; + } + + public PSHost Host => this.originalCommandRuntime.Host; + + public PSTransactionContext CurrentPSTransaction => this.originalCommandRuntime.CurrentPSTransaction; + + private void CheckForInteractive() + { + // This is an interactive call -- if we are not on the original thread, this will only work if this was done at ACR creation time; + if (!AllowInteractive) + { + throw new System.Exception("AsyncCommandRuntime is not configured for interactive calls"); + } + } + private void WaitOurTurn() + { + // wait for our turn to play + semaphore?.Wait(cancellationToken); + + // ensure that completed is not set + completed.Reset(); + } + + private void WaitForCompletion() + { + // wait for the result (or cancellation!) + WaitHandle.WaitAny(new[] { cancellationToken.WaitHandle, completed?.WaitHandle }); + + // let go of the semaphore + semaphore?.Release(); + + } + + public bool ShouldContinue(string query, string caption, bool hasSecurityImpact, ref bool yesToAll, ref bool noToAll) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldContinue(query, caption, hasSecurityImpact, ref yesToAll, ref noToAll); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool yta = yesToAll; + bool nta = noToAll; + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldContinue(query, caption, hasSecurityImpact, ref yta, ref nta); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + yesToAll = yta; + noToAll = nta; + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldContinue(string query, string caption) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldContinue(query, caption); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldContinue(query, caption); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldContinue(string query, string caption, ref bool yesToAll, ref bool noToAll) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldContinue(query, caption, ref yesToAll, ref noToAll); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool yta = yesToAll; + bool nta = noToAll; + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldContinue(query, caption, ref yta, ref nta); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + yesToAll = yta; + noToAll = nta; + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldProcess(string target) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldProcess(target); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldProcess(target); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldProcess(string target, string action) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldProcess(target, action); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldProcess(target, action); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldProcess(verboseDescription, verboseWarning, caption); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldProcess(verboseDescription, verboseWarning, caption); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool ShouldProcess(string verboseDescription, string verboseWarning, string caption, out ShouldProcessReason shouldProcessReason) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.ShouldProcess(verboseDescription, verboseWarning, caption, out shouldProcessReason); + } + + CheckForInteractive(); + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + ShouldProcessReason reason = ShouldProcessReason.None; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.ShouldProcess(verboseDescription, verboseWarning, caption, out reason); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + shouldProcessReason = reason; + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void ThrowTerminatingError(ErrorRecord errorRecord) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.ThrowTerminatingError(errorRecord); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.ThrowTerminatingError(errorRecord); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public bool TransactionAvailable() + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return originalCommandRuntime.TransactionAvailable(); + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + bool result = false; + + // set the function to run + runOnMainThread = () => result = originalCommandRuntime.TransactionAvailable(); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // set the output variables + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteCommandDetail(string text) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteCommandDetail(text); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteCommandDetail(text); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteDebug(string text) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteDebug(text); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteDebug(text); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteError(ErrorRecord errorRecord) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteError(errorRecord); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteError(errorRecord); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteInformation(InformationRecord informationRecord) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteInformation(informationRecord); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteInformation(informationRecord); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteObject(object sendToPipeline) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteObject(sendToPipeline); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteObject(sendToPipeline); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteObject(object sendToPipeline, bool enumerateCollection) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteObject(sendToPipeline, enumerateCollection); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteObject(sendToPipeline, enumerateCollection); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteProgress(ProgressRecord progressRecord) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteProgress(progressRecord); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteProgress(progressRecord); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteProgress(long sourceId, ProgressRecord progressRecord) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteProgress(sourceId, progressRecord); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteProgress(sourceId, progressRecord); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteVerbose(string text) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteVerbose(text); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteVerbose(text); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void WriteWarning(string text) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + originalCommandRuntime.WriteWarning(text); + return; + } + + // otherwise, queue up the request and wait for the main thread to do the right thing. + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + + // set the function to run + runOnMainThread = () => originalCommandRuntime.WriteWarning(text); + + // tell the main thread to go ahead + readyToRun.Set(); + + // wait for the result (or cancellation!) + WaitForCompletion(); + + // return + return; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void Wait(System.Threading.Tasks.Task ProcessRecordAsyncTask, System.Threading.CancellationToken cancellationToken) + { + do + { + WaitHandle.WaitAny(new[] { readyToRun.WaitHandle, ((System.IAsyncResult)ProcessRecordAsyncTask).AsyncWaitHandle }); + if (readyToRun.IsSet) + { + // reset the request for the next time + readyToRun.Reset(); + + // run the delegate on this thread + runOnMainThread(); + + // tell the originator everything is complete + completed.Set(); + } + } + while (!ProcessRecordAsyncTask.IsCompleted); + if (ProcessRecordAsyncTask.IsFaulted) + { + // don't unwrap a Aggregate Exception -- we'll lose the stack trace of the actual exception. + // if( ProcessRecordAsyncTask.Exception is System.AggregateException aggregate ) { + // throw aggregate.InnerException; + // } + throw ProcessRecordAsyncTask.Exception; + } + } + public Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep Wrap(Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.SendAsyncStep func) => func.Target.GetType().Name != "Closure" ? func : (p1, p2, p3) => ExecuteSync>(() => func(p1, p2, p3)); + public System.Collections.Generic.IEnumerable Wrap(System.Collections.Generic.IEnumerable funcs) => funcs?.Select(Wrap); + + public T ExecuteSync(System.Func step) + { + // if we are on the original thread, just call straight thru. + if (this.originalThread == System.Threading.Thread.CurrentThread) + { + return step(); + } + + T result = default(T); + try + { + // wait for our turn to talk to the main thread + WaitOurTurn(); + // set the function to run + runOnMainThread = () => { result = step(); }; + // tell the main thread to go ahead + readyToRun.Set(); + // wait for the result (or cancellation!) + WaitForCompletion(); + // return + return result; + } + catch (System.OperationCanceledException exception) + { + // maybe don't even worry? + throw exception; + } + } + + public void Dispose() + { + if (cmdlet != null) + { + cmdlet.CommandRuntime = this.originalCommandRuntime; + cmdlet = null; + } + + semaphore?.Dispose(); + semaphore = null; + readyToRun?.Dispose(); + readyToRun = null; + completed?.Dispose(); + completed = null; + } + } +} \ No newline at end of file diff --git a/src/DataProtection/generated/runtime/AsyncJob.cs b/src/DataProtection/generated/runtime/AsyncJob.cs new file mode 100644 index 000000000000..913ff4645603 --- /dev/null +++ b/src/DataProtection/generated/runtime/AsyncJob.cs @@ -0,0 +1,270 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +namespace Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Runtime.PowerShell +{ + using System.Management.Automation; + using System.Management.Automation.Host; + using System.Threading; + + using System.Threading.Tasks; + + public class LongRunningJobCancelledException : System.Exception + { + public LongRunningJobCancelledException(string message) : base(message) + { + + } + } + + public class AsyncJob : Job, System.Management.Automation.ICommandRuntime2 + { + const int MaxRecords = 1000; + + private string _statusMessage = string.Empty; + + public override string StatusMessage => _statusMessage; + + public override bool HasMoreData => Output.Count > 0 || Progress.Count > 0 || Error.Count > 0 || Warning.Count > 0 || Verbose.Count > 0 || Debug.Count > 0; + + public override string Location => "localhost"; + + public PSHost Host => originalCommandRuntime.Host; + + public PSTransactionContext CurrentPSTransaction => originalCommandRuntime.CurrentPSTransaction; + + public override void StopJob() + { + Cancel(); + } + + private readonly PSCmdlet cmdlet; + private readonly ICommandRuntime2 originalCommandRuntime; + private readonly System.Threading.Thread originalThread; + + private void CheckForInteractive() + { + // This is an interactive call -- We should never allow interactivity in AsnycJob cmdlets. + throw new System.Exception("Cmdlets in AsyncJob; interactive calls are not permitted."); + } + private bool IsJobDone => CancellationToken.IsCancellationRequested || this.JobStateInfo.State == JobState.Failed || this.JobStateInfo.State == JobState.Stopped || this.JobStateInfo.State == JobState.Stopping || this.JobStateInfo.State == JobState.Completed; + + private readonly System.Action Cancel; + private readonly CancellationToken CancellationToken; + + internal AsyncJob(PSCmdlet cmdlet, string line, string name, CancellationToken cancellationToken, System.Action cancelMethod) : base(line, name) + { + SetJobState(JobState.NotStarted); + // know how to cancel/check for cancelation + this.CancellationToken = cancellationToken; + this.Cancel = cancelMethod; + + // we might need these. + this.originalCommandRuntime = cmdlet.CommandRuntime as ICommandRuntime2; + this.originalThread = System.Threading.Thread.CurrentThread; + + // the instance of the cmdlet we're going to run + this.cmdlet = cmdlet; + + // set the command runtime to the AsyncJob + cmdlet.CommandRuntime = this; + } + + ///

    Nor7UBG(9?pDmZSOaobGUW$jHa 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%0DdGQ#|n5$30iFh6C4`6(mJ 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ˀ)ty5SN+PXi|E^MGVU~$B;L9#6f&nF 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

    r1 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Azure.Core.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Azure.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..e52829cd90e5e9c9304cdf1a6473e241845c3c5c GIT binary patch literal 128888 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 MomJEI3oIf24{w;^kN^Mx literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.Bcl.AsyncInterfaces.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000000000000000000000000000000000000..0a784888baf18341861adeed296adc47cb8e153c GIT binary patch literal 20856 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/Microsoft.IdentityModel.Clients.ActiveDirectory.dll new file mode 100644 index 0000000000000000000000000000000000000000..b1a1d66b59c5de5410669bdd668a4005cb18fdf9 GIT binary patch literal 232048 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�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 z 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Numerics.Vectors.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/NetCoreAssemblies/System.Numerics.Vectors.dll new file mode 100644 index 0000000000000000000000000000000000000000..10205772c39d70f6c83a120b012e25c7a206da7b GIT binary patch literal 163464 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Strategies.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Azure.PowerShell.Strategies.dll new file mode 100644 index 0000000000000000000000000000000000000000..db19546ed10a9a6a7aa73db14a2ed1a6d70f0a48 GIT binary patch literal 64376 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Rest.ClientRuntime.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.Rest.ClientRuntime.dll new file mode 100644 index 0000000000000000000000000000000000000000..400c8287a752dff78595acd802b7404f9301d096 GIT binary patch literal 79736 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 literal 0 HcmV?d00001 diff --git a/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.DataMovement.dll b/src/DataProtection/generated/modules/Az.Accounts/1.8.1/Microsoft.WindowsAzure.Storage.DataMovement.dll new file mode 100644 index 0000000000000000000000000000000000000000..6ac672abd48641e9dc4266d9fc3dfabcfad39110 GIT binary patch literal 302784 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